我试图在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/事先的任何答复谢谢。
您正在创建的指令,一个新的分离范围( scope: { 'fancyDisplay': '=' }
这意味着你将无法从父范围内访问性能。 由于tagFilter
被父范围定义,您将无法访问它。
通过tagFilter
作为该指令的属性:
<div fancy-display="model.data" filter="tagFilter"></div>
而关于指令:
scope: {
fancyDisplay: '=',
tagFilter: '=filter'
},
的jsfiddle: http://jsfiddle.net/bmleite/VDLqa/5/
感谢@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>",
});
逆不起作用。