У меня есть таблица, в которой используется отфильтрованная текстовая область для построения отфильтрованной таблицы и вывода количества. ДОМ выглядит следующим образом.
<div filter-input></div>
<table>
<tr ng-repeat='item in filtered=(mySourceJSON | filter:filterInputService.searchText)'></tr>
.. .. ..
.. .. ..
</table>
С вводом фильтра, являющимся директивой:
angular.module('myApp')
.directive('filterInput', function () {
return {
controller: 'FilterInputCtrl',
templateUrl: 'views/filter_input.html',
restrict: 'A',
link: function(scope, el, attr){
}
};
});
Со следующим контроллером:
angular.module('myApp')
.controller('FilterInputCtrl', function ($scope, filterInputService) {
$scope.filterInputService = filterInputService;
});
И содержимое шаблона:
<div>
<span>
<input ng-model='filterInputService.searchText'/>
</span>
<span>
Showing {{filtered.length}} / {{gridItems.length}}
</span>
</div>
Служба представляет собой простой заполнитель, который устанавливает для searchText значение empty string
при инициализации.
Поведение, которое я вижу, выглядит следующим образом:
Когда я ввожу символ в поле ввода фильтра, таблица обновляется и скрывает элементы, не соответствующие фильтру, однако количество отфильтрованных элементов не обновляется до тех пор, пока не будет введен второй символ. Что именно вызывает это? Почему область не обновляется до второго символа? Как этого избежать?
console.log
в свою функцию FilterInputCtrl и посмотрите, сколько раз она появляется в вашей консоли. Более одного раза указывает, что у вас может быть несколько проблем с областью действия. Сколько разng-app
появляется в вашем HTML? - person Code Whisperer   schedule 16.07.2013