2016-03-25 34 views
0

içinde arama yaparken tüm verileri yüklemekten kaçınmak için AngularJS kullanarak büyük veriyi yalnızca girişte> 3 karakter girdiklerinde araştırıyorum.Angular

var app = angular.module('test_table', []); 
app.controller('main_control',function($scope, $http){ 
    $scope.inputChange = function(){ 
     if($scope.search.length > 3){ 
      $http.get("http://localhost:7001/load").success(function(data){ 
       $scope.loaded=data; 
      }); 
     } 
     if($scope.search.length < 4){ 
      $http.get("http://localhost:7001/load").success(function(data){ 
       $scope.loaded=""; 
      }); 
     } 
    }  
}); 

HTML kodu:

<input type="search" class="inputsearchform" ng-model="search" ng-change="inputChange()"/> 
... 
<tr class="rowR" ng-repeat="data in loaded | filter:{song_name: search}"> 

Ben sorun var. 3 karakterden fazla yazı yazıp girdideki varsayılan düğmeyi kullanarak her şeyi sildiğimde, tüm veriler sayfaya yüklenir ve büyük bir gecikmeye neden olur. Nasıl başa çıkılır bununla?

cevap

3

Aşağıdaki ekleyebilirsiniz:

if($scope.search.length == 0){ 
     $scope.loaded=""; 
} 

veya sil düğmesi tarafından tetiklenen bir işlev oluşturun:

$scope.delete = function(){ 
     $scope.loaded=""; 
} 

PS: Sen gidiyorsun eğer bir hizmeti çağırmalıdır değil Boş bir değişken atayın:

 if($scope.search.length < 4){ 
      $http.get("http://localhost:7001/load").success(function(data){ 
       $scope.loaded=""; 
      }); 
     } 

müttefik olabilir: 2

 if($scope.search.length < 4){ 
       $scope.loaded=""; 
     } 

PS: if($scope.search.length < 4) gerçekten mantıklı değil ya çünkü 3 karakter varsa - Bunu önlemek amacıyla

+0

Başka bir koşul oluşturmak yerine http aramasını <4 yerine almamak için bir neden var mı? İçindeki noktayı göremiyorum – aw04

+0

Evet, benim hatam. Yardım için teşekkürler! –

1

aw04 @ tarafından atlatmış olarak ifadesi memnun olurdu Gecikme, oluşturduğunuz verileri sınırlamanız gerekir. Bunun için açısal filtreyi limitTo kullanabilirsiniz. LimitTo'yu varsayılan olarak yüklemek istediğiniz herhangi bir değere ayarlayın.

+0

Verileri performans nedenleriyle sınırlandırmaya çalışıyorsanız, sunucuda sınırlamak daha mantıklı olacaktır – aw04

+0

@ aw04 Bununla ne demek istiyorsunuz? Çünkü performansı artırmak istiyorum. Bunun için ne tavsiye edersiniz? –

+0

@LevS Bu cevabın söylediği şey verilerin sınırlanmasıdır; bu, sayfalama veya bir çeşit yükleme daha fazla işlevsellik eklemeniz gerektiği anlamına gelir. Benim açımdan bunu yapmanın çok yardımcı olamayacağıydı çünkü sunucudan tüm verileri yüklüyorsanız, bu durum büyük olasılıkla – aw04