元编程AngularJS滤波器

时间:2015-06-08 13:05:45

标签: javascript angularjs angular-filters

有没有办法在Angular中动态创建过滤器?下面我有简单的过滤器,只返回对象数组的某些属性。

module.filter("firstAndLastName", function() {
    return function(input) {
        return input.map(function(obj) {
            return obj.first_name + " " + obj.last_name
        });
    }
})

module.filter("gradYear", function() {
    return function(input) {
        return input.map(function(obj) {
            return obj.grad_year
        });
    }
})

如果我想抓取一个对象数组的“email_address”并注入。有没有办法在运行时动态创建它?

module.controller("someController", ["emailAddressFilter",
    function(emailAddressFilter) {
        // use emailAddressFilter
    }
])

更一般的问题

我们如何动态创建Angular组件?

1 个答案:

答案 0 :(得分:1)

不要忘记,在Javascript中,一切都是在运行时创建的。

而不是:

module.filter("whatEverFilter", function() {
  return function(input) {
    return input.map(function(obj) {
      return obj.first_name + " " + obj.last_name
    });
  }
});

您可以执行以下操作:

module.filter("whatEverFilter", function() { 
  //stringArray can be eg : ["first_name","last_name"]
  return function(input, stringArray) {
    return input.map(function(obj) {  
      var strReturn = obj[stringArray[0]]
      for(var i=1; i<stringArray.length ;i++){
          strReturn += " ";
          strReturn += obj[stringArray[i]];
      }
      return strReturn;
    });
  }
})