app.js
angular.module('capilleira.clickAndGambleMobile', [
'capilleira.clickAndGambleMobile.filters'
)]
filter.js
angular.module('capilleira.clickAndGambleMobile.filters', [])
.filter('sportsFiltered', function() {
return function(output) {
return alert('I AM THE FILTER');
}
});
whatever.html
<!--HERE IS THE NG-MODEL-->
<input type="text" ng-model="sportsFiltered">
<div ng-repeat="sport in sportsFilter = (sports | filter:sportsFiltered)">
{{sport.name}}
</div>
<div ng-repeat="league in sport.leagues | filter: {leagues: [{'name':sportsFiltered}]}}">
{{league.name}}
</div>
为什么此过滤器没有执行alert
?或者我该怎么做才能意识到过滤器是否正常工作?
答案 0 :(得分:5)
您错误地使用了过滤器,您已创建了一个完整的过滤器,因此您应该直接将其用作
sports | sportsFiltered
而不是
sports | filter:sportsFiltered
使用(sports | filter:sportsFiltered)
时,它被认为是一个过滤器(内置过滤器)comparator
函数,您可以设置它,它将只运行该函数(在作用域上)并基于truthy / falsy值将决定是否显示该项目。所以最终它甚至不考虑你创建的实际过滤器。
{{filter_expression | filter:expression:comparator}}