Я хотел бы выполнить итерацию по массиву с помощью ng-repeat
и фильтровать содержащиеся объекты в зависимости от свойства функции. Plunker
Это означает, что у меня есть такой объект:
vm.show1 = function(){
return true;
};
var object1 = {label: 'Object1', show: vm.show1};
и хотел бы отфильтровать его примерно так:
<div ng-repeat="object in ctrl.objects | filter:{show:true}">{{object.label}}</div>
Очевидно, что в приведенном выше примере vm.show1
является функцией (и, следовательно, не true
). Есть ли способ заставить фильтр вызывать функцию и оценивать результат или мне нужно написать собственный фильтр?
Изменение: Это вообще возможно? Если угловое устройство не обрабатывает грязную проверку коробки, фильтр не будет знать, когда нужно переоценить функцию.
Я думаю, что лучший способ сделать это - с помощью специальной функции фильтра:
$scope.filterFn = function(object)
{
//if true, rendered in ng-repeat
//if false, not rendered in ng-repeat
return object.show1();
};
<div ng-repeat="object in ctrl.objects | filter:filterFn">