我有这个:
<div class="row" ng-repeat="(promptId, q) in (categoryFilteredObj
= (categoryObj | custom:searchText:selectAllCheckbox:answeredCheckbox))">
一切正常。但是searchText
更改时似乎仅调用过滤器。
如何强制评估过滤器?我可以更改搜索文本"人为地",但这不是正确的方法。
我希望,如果我更改 -
的值selectAllCheckbox
或
answeredCheckbox
将重新评估过滤器,但事实并非如此!
换句话说:我要做的是重新启动此NG重复功能,以便重新评估过滤器,因为我刚刚对我的状态进行了更改程序,我希望对象列表更改以反映状态更改。但是,当前,NG重复列表没有更改,并且过滤器不会被击中(我检查了日志(。我想以某种方式"强制"重新评估的NG重复和过滤器。我认为$scope.$apply()
不适合此。
它对我来说很好。可能您犯了逻辑错误或过滤器的代码投掷错误或过滤器的参数实际上没有更改:
angular.module('app', []).controller('MyController', ['$scope', function($scope) {
$scope.input = {}
}]).filter('myFilter', function(){
return function(input, param1, param2, param3){
input.param1 = param1;
input.param2 = param2;
input.param3 = param3;
return input
}
})
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>
<body ng-app="app">
<div ng-controller="MyController">
<input type='text' ng-model='param1' ng-init='param1 = 1'/>
<input type='text' ng-model='param2' ng-init='param2 = 2'/>
<input type='text' ng-model='param3' ng-init='param3 = 3'/>
<ul>
<li ng-repeat='(key, val) in (obj = (input | myFilter : param1 : param2: param3))'>key: {{key}}, val: {{val}}</li>
</ul>
</div>
</body>