angularjs组件动态过滤器

时间:2017-01-23 22:27:15

标签: angularjs dynamic filter components angularjs-1.6

如果过滤器的名称是静态的,您可以使用" Filter"来注入过滤器的名称。附加到组件的控制器功能中,如下所示:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

因此,在您的代码中将其更改为:

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