2014-10-06 4 views
0

У меня есть поле ввода, где вы можете указать минимальное количество отзывов. У меня также есть функция, которая обновляет данные, которые ng-repeat заполняет и создает таблицу. Но мне нужно, когда вы вводите некоторое число в поле ввода, моя моя функция запускается автоматически и изменяет данные, что означает, что моя таблица обновляется автоматически. Это своего рода двусторонняя привязка. (Я не хочу использовать фильтр прямо на моих ng-repeat, фильтры в угловой перспективе очень часто и к снижению производительности)

Вот мое поле ввода:

<label>Reviews Min: <input type="number" ng-init="revNum=30" class="form-control review-input" min="0" step="10" ng-model="filterValues.revNum" /></label> 

Вот мой ng-repeat:

ng-repeat="car in sortedCarList" 

А вот функция:

$scope.formattedTable = function(index){ 
    $scope.initCarList(index); 
    $scope.sortedCarList = []; 
    var carlistLength = $scope.carList.length; 
    for (var i=0;i<carlistLength;i++){ // just checks every row if values passes user requirements like: min number of review and price range 
     var rowBool = $scope.tableFilter($scope.carList[i]); 
     if (rowBool){ 
      $scope.sortedCarList.push($scope.carList[i]); 
     } 
    } 
} 

Как я могу это достичь?

+0

Вы пробовали использовать [ 'нг-change'] (https://docs.angularjs.org/api/ng/directive/ngChange)? – bmleite

+0

@bmleite: Где? –

ответ

1

Используйте директиву ng-change для запуска определенной функции каждый раз, когда изменяется вход.

<label>Reviews Min: <input type="number" ng-init="revNum=30" class="form-control review-input" min="0" step="10" ng-model="filterValues.revNum" ng-change="formattedTable()" /></label> 
1

там два methodes:

а) Watcher:

$scope.$watch('filterValues.revNum', function() { 
    $scope.formattedTable(); 
}); 

б) нг-изменение:

<label>Reviews Min: <input type="number" ng-init="revNum=30" class="form-control review-input" min="0" step="10" ng-model="filterValues.revNum" ng-change="formattedTable()"/></label>