【发布时间】:2017-09-05 08:45:56
【问题描述】:
在 lodash 中使用 Angular v1.5.8。我在 ng-repeat 中的数组上设置了一个自定义过滤器。我也有一个复选框,当它被选中时,过滤器将从 ng-repeat 中删除某个元素,当未选中时,该元素将被重新添加到 ng-repeat。
除了复选框条件之外,过滤器包含应用 Angular 的 filter 过滤器以始终删除一些元素。
角度应用:
angular.module('app', [])
.controller('appCtrl', ['$scope',
function($scope) {
$scope.newArray = [1,2,3,4,5];
}])
.filter('simpleFilter', function($filter){
return function(newArray,checked){
newArray = $filter('filter')(newArray, '!4');
if(checked){
_.remove(newArray, function(elem){
return elem == 2;
});
}
return newArray;
}
});
和html:
<div ng-app="app">
<div ng-controller="appCtrl">
<span ng-repeat="el in newArray | simpleFilter:obj.checked">
{{el}}
</span>
<hr>
<input type="checkbox" ng-model="obj.checked">
</div>
</div>
上面的例子运行顺利,但是如果我从自定义过滤器中删除默认过滤器(这一行:newArray = $filter('filter')(newArray, '!4');)并重新选中复选框,_.remove 隐藏的元素将不会重新出现。
【问题讨论】:
-
它对你有用吗?
-
@Alexandru-IonutMihai 是的,它正在工作。抱歉回复晚了。
标签: javascript angularjs arrays angular-filters