自定义筛选语法

时间:2014-02-22 23:49:32

标签: javascript angularjs

我正在使用tutorial来创建角度过滤器。我对一些实现感到困惑,它涉及到基本的javascript。这是鳕鱼片段:

// on the app object, the method filter is called passing a name parameter and the function
myApp.filter('reverse', function () {
  return function (text) {
// now a function that accepts text as a parameter is returned    
return text.split("").reverse().join("");
// the text parameter splits, revers, and joins the text parameter.
  }
});

我的问题是为什么不能写这样的东西呢?在第二行的第一个片段中返回函数的目的是什么?

myApp.filter('reverse', function (text) {
    return text.split("").reverse().join("");
});

1 个答案:

答案 0 :(得分:1)

传递给filter的函数是依赖注入函数。想象一下,你注入了一些东西:

myApp.filter('uc', function($http, myService, text) {
  return text.toUpperCase();
});

myApp.filter('repeat', function($http, $location, myService2, text) {
  return text + text;
});

您如何知道text在参数列表中的位置?现在这些过滤器不会组合,因为参数不匹配。如果你返回一个总是把值作为第一个参数的函数,那么一切都很好,你可以这样做:

repeat(uc(value))