gpt4 book ai didi

angularjs - 在属性中带有过滤器的 Angular 自定义指令

转载 作者:行者123 更新时间:2023-12-02 00:08:24 24 4
gpt4 key购买 nike

我想制作 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com