使用过滤器随着AngularJS指令(Using Filters With Directives i

2019-07-20 17:50发布

我试图在AngularJS指令中使用过滤器,但不知道到底怎么做。 从邮件列表上的一些信息看来,你应该能够注入$过滤器并使用它,但我不知道如何/在哪里调用它。

我的指令目前看起来是这样的:

myApp.directive('fancyDisplay', ['$filter', function($filter) {
    return {
        scope: {
            'fancyDisplay': '='
        },
        template: "<div ng-repeat='datum in fancyDisplay | filter:tagFilter'>{{datum.name}}</div>"
    };
}]);

虽然filter:tagFilter不工作。 我应该如何筛选在该指令我的数据?

的jsfiddle提供http://jsfiddle.net/VDLqa/4/事先的任何答复谢谢。

Answer 1:

您正在创建的指令,一个新的分离范围( scope: { 'fancyDisplay': '=' }这意味着你将无法从父范围内访问性能。 由于tagFilter被父范围定义,您将无法访问它。

通过tagFilter作为该指令的属性:

<div fancy-display="model.data" filter="tagFilter"></div>

而关于指令:

scope: {
    fancyDisplay: '=',
    tagFilter: '=filter'
},

的jsfiddle: http://jsfiddle.net/bmleite/VDLqa/5/



Answer 2:

感谢@bmleite你的答案。

这可能是有帮助的另一件事是确保申报您的NG-重复指令,这样柜面你有你的清单上deplicates。

我花了永远摸不着头脑。 显然,你用x指定的轨道之前,你必须筛选:

app.directive("someDirective", function(){ ...

    restrict: "E",
    ...
    template:"<ul ng-repeat='t in tree | filter:key track by $index'><li>{{t}}</li></ul>",

});

逆不起作用。



文章来源: Using Filters With Directives in AngularJS