javascript - 我可以制作一个由多个过滤器组成的 angularJS 过滤器吗?

标签 javascript angularjs filter

我正在尝试通过使用过滤器声明中的方法返回对象文字来创建参数化过滤器。也就是说,我希望能够执行 {{ input | myFilter.foo | myFilter.bar }} 等...换句话说,我正在尝试为我的过滤器命名空间。

我希望它能正常工作,但我收到了如下错误:

Unknown provider: myFilter.fooFilterProvider <- myFilter.fooFilter

我知道我可以将信息传递给过滤器,例如 {{ input | filter:foo }},但据我所知,它只适用于字符串(?),我必须切换这个值,而不是直接返回带有方法的对象文字。

处理如下示例的最佳方法是什么? (Plunker Demo)

angular.module('plunker', [])
.filter('greet', function() {
    var greetFactory = function(prefix) {
      return function(name) {
        return prefix + name + '!'
      }
    }
    return {
      hello: greetFactory('Hello'),
      wassup: greetFactory('Wassup'),
      yo: greetFactory('Yo!')
    }
});
<小时/>
<p>{{"Zach" | greet.hello}} // should output: Hello Zach!</p>
<p>{{"Bill" | greet.yo}}    // should output: Yo Bill!</p>
<p>{{"Bob" | greet.wassup}} // should output: Wassup Bob!</p>

最佳答案

是的,您可以在过滤器中添加其他过滤器作为依赖项

app.filter('myFilter', ['greetFilter', function(greetFilter){

}])

请注意,您必须在要注入(inject)的过滤器名称末尾添加“Filter”。然后您可以使用这些过滤器来构建您自己的过滤器。

关于javascript - 我可以制作一个由多个过滤器组成的 angularJS 过滤器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22720890/

相关文章:

javascript - 如何将1个键值拆分为2个键值

python - Django 过滤器 "less than"日期时间无法正常工作

email - 在 Gmail 过滤器中排除多个发件人

python - 压缩 numpy 数组的有效方法(python)

javascript - 考虑到过滤选项是可选的,过滤数组

javascript - React 样式组件 : how to add css styles based on props?

javascript - Focus() 在使用 ios 10 safari 浏览器的 ionic 中不起作用

angularjs - 如何在 ng-grid 内显示图像

django - 如何在 django 模板标签内使用 Angular 表达式?

javascript - Google 自定义搜索 API javascript