angularjs 组件动态过滤器

angularjs component dynamic filter

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

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

有没有一种方法可以将过滤器的名称传递到 angularjs 版本 1.6 组件中,并使用“@”绑定为 argument/attribute 字符串,然后能够通过名称和在该组件的控制器内部使用它?

$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);
        }
    ]
});