У меня есть директива ngRepeat
, которая рассчитывает на основе выходных данных фильтров. Это работает как ожидалось, за исключением случаев, когда я изменяю значение динамического фильтра. Когда я изменяю значение фильтра, ngRepeat
фильтрует правильно, но подсчеты не всегда обновляются с ним. Они иногда, но не каждый раз. Как я могу гарантировать, что значение будет обновляться каждый раз?Директива AngularJS, которая делает расчет при изменении области видимости
ngRepeat
<li class="list-group-item" data-ng-repeat="e1 in events | availFilter:filterBy | unique:team" ng-init="teamCount = (events | availFilter:filterBy | filter:{team:e1.team})">
<div class="list-group-item-header" data-ng-click="headerClick($event)" >
<span class="title">{{ e1.team }}</span>
<span class="badge">{{ teamCount.length }}</span>'
</div>
Элементы управления, Изменить фильтр
<li role="presentation" data-ng-class="{ active: activeTab('today') }">
<a data-ng-click="filterBy = 'today';">Today</a>
</li>
<li role="presentation" data-ng-class="{ active: activeTab('before8') }"><a data-ng-click="filterBy = 'before8';">Before 8am</a></li>
<li role="presentation" data-ng-class="{ active: activeTab('after5') }"><a data-ng-click="filterBy = 'after5';">After 5pm</a></li>
Фильтр
availApp.filter('availFilter', function() {
return function (collection, term) {
var outCollection = [];
switch(term){
case 'today':
outCollection = collection;
break;
case 'before8':
angular.forEach(collection, function(item){
if(item.start.getHours() < 8)
outCollection.push(item);
});
break;
case 'after5':
angular.forEach(collection, function(item){
var hr = item.end.getHours();
var min = item.end.getMinutes();
if(hr > 17 || (hr == 17 && min > 0))
outCollection.push(item);
});
break;
default:
break;
}
return outCollection;
};
});
Переменная 'filterBy' отличается от области видимости, поэтому я работал в предположении, что ее изменение будет предупреждать углы изменения ... Я думаю, что это bc Я объявляю новую переменную для каждой строки с 1ngInit' который не отделен от области – ExceptionLimeCat
Я закончил создание подмножества данных из списка, а затем привязал его к области, как вы предлагали. Благодарю. – ExceptionLimeCat