我正在尝试通过使用过滤器声明中的方法返回对象文字
来创建参数化过滤器。也就是说,我希望能够执行 {{ 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/