为什么我的自定义过滤器不起作用?

时间:2015-02-05 21:02:26

标签: angularjs

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?或者我该怎么做才能意识到过滤器是否正常工作?

1 个答案:

答案 0 :(得分:5)

您错误地使用了过滤器,您已创建了一个完整的过滤器,因此您应该直接将其用作

sports | sportsFiltered

而不是

sports | filter:sportsFiltered

使用(sports | filter:sportsFiltered)时,它被认为是一个过滤器(内置过滤器)comparator函数,您可以设置它,它将只运行该函数(在作用域上)并基于truthy / falsy值将决定是否显示该项目。所以最终它甚至不考虑你创建的实际过滤器。

  

{{filter_expression | filter:expression:comparator}}