Как избежать загрузки целых данных при поиске в Angular

0

Я просматриваю большие данные, используя AngularJS только когда я печатаю> 3 символа ввода.

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:

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

У меня есть проблема. Когда я печатаю более 3 символов, а затем удаляю все, используя кнопку ввода по умолчанию, все данные загружаются на страницу, и это вызывает большую задержку. Как с этим бороться?

2 ответа

3
Лучший ответ

Вы можете добавить следующее:

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

или создать функцию, вызванную кнопкой удаления:

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

PS: вы не должны вызывать службу, если вы собираетесь назначить пустую переменную:

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

должно быть действительно:

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

PS 2: if($scope.search.length < 4) самом деле не имеет смысла либо потому, что если есть 3 символа - это утверждение if будет удовлетворено, так как ускорено @aw04

  • 0
    Есть ли причина не просто удалять http-вызов на <4, а не создавать другое условие? Я не вижу смысла в этом
  • 0
    Да, моя ошибка Спасибо за помощь!
1

Чтобы избежать задержки, вам придется ограничить данные, которые вы limitTo. Для этого вы можете использовать limitTo углового фильтра. Установите limitTo для любого значения, которое вы хотите загрузить по умолчанию.

  • 0
    если вы пытаетесь ограничить данные по соображениям производительности, было бы более разумно ограничить их на сервере
  • 0
    @ aw04 что ты имеешь в виду под этим? Потому что я хочу повысить производительность. Что вы можете посоветовать для этого?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню