angularjs 组件动态过滤器

Posted

技术标签:

【中文标题】angularjs 组件动态过滤器【英文标题】:angularjs component dynamic filter 【发布时间】:2017-06-08 13:54:43 【问题描述】:

如果过滤器的名称是静态的,您可以将过滤器的名称加上“过滤器”添加到组件的控制器函数中,如下所示:

angular.module('ngApp').component('myComponent', 
    bindings: 
        dynamicFilter: '@'
    ,
    controller: [
        'staticFilterFilter',
        function(staticFilterFilter) 
            this.valueSetByStaticFilter = staticFilterFilter('x');
        ]
);

有没有办法将过滤器的名称传递给 angularjs 1.6 版组件,使用“@”作为参数/属性字符串绑定,然后能够按名称获取该过滤器并在该控制器内部使用它组件?

【问题讨论】:

【参考方案1】:

$filter service 注入到组件的 Controller 中。然后,您可以通过执行以下操作来检索和使用过滤器:

var filtered = $filter('yourFilterName')(arg1,arg2);

所以在您的代码中将其更改为:

angular.module('ngApp').component('myComponent', 
    bindings: 
        dynamicFilter: '@'
    ,
    controller: [
        '$filter',
        function($filter) 
            var filtered = $filter(this.dynamicFilter)(arg1,arg2);
        
    ]
);

【讨论】:

谢谢,我之前尝试过类似的方法,但遇到了错误。但它确实对我有用,谢谢。 好东西!很高兴它有帮助。

以上是关于angularjs 组件动态过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 angularjs 处理具有动态过滤添加的高级搜索?

如何使用angularjs添加动态过滤功能来处理高级搜索?

嵌套的UI过滤器AngularJS [重复]

angularjs 过滤器“日期”和 $locale 服务

angularjs随笔01 数据双向绑定理解 自定义过滤器 时钟更新列子

ngmodel 更改时未触发角度日期过滤器