我想制作 Angular 指令,其中我对作为参数传递的数据使用过滤器。
所以像这样:
<div class="my-module" data="a in array | orFilter:filter"></div>
其中“data”是指令“my-module”的属性。 我查看了 ngRepeat 源代码,但他们解析了 ng-repeat 参数,然后对它们进行了评估。我不能使用 ng-repeat,因为我正在从数据参数创建对象的新实例( map 标记)。
真的有那么难吗?是否可以在自定义指令中执行此操作以及如何执行?
我想要的小例子:http://jsfiddle.net/PjRAr/1/
编辑
我正在尝试扩展这个 map wrapper呈现过滤标记。
我的潜在解决方案是保留所有标记和可见标记的副本。将 $watch 添加到过滤器中,当过滤器更改时调用 $scope.markers = $scope.$eval("allMarkers | orFilter:filter");
.
使用此解决方案,我们需要保存所有标记的两个副本 (~500)。
最佳答案
您可以$eval
过滤器表达式。
在你的指令链接函数中:
elem.text( scope.$eval( attrs.data ).join(', ') );
在你的模板中:
<div my-directive data="['Hello', 'xxx', 'World'] | filter:'o'"></div>
指令呈现(通过过滤掉'xxx')到:
Hello, World
编辑:
如果值是动态的,你当然可以这样做:
scope.$watch( attrs.data, function( arr ) {
elem.text( arr.join(', ') );
});
不过,我认为您无法避免使用 $watch
。
关于angularjs - 在属性中带有过滤器的 Angular 自定义指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975225/