我正在尝试创建一个自定义ngRepeat
指令,该指令应在 原始ngRepeat
指令之前执行 。在那里,我想将原始属性ng-repeat="user in users"
更改为ng-repeat="user in $data"
。
我希望原始ngRepeat
不会显示任何数据,因为$data
没有项目。但这不会发生。它仍然显示所有数据。
看一下这个例子:http://plnkr.co/edit/uHTJ61aA7drcg6ZVjNbj?p=preview
在那里你可以看到我的指令改变了ng-repeat
属性。如果您使用开发工具检查HTML,则可以看到它已更改为ng-repeat="user in $data"
。
为什么它仍能渲染所有行?我怎样才能防止这种情况发生?
实际上我想用$data
中的一小部分内容填充$scope.users
。因此,我必须使用我的自定义user in users
属性截取原始user in $data
。
答案 0 :(得分:2)
我会说有两个解决方案,它们都与您当前的方法不同。 (并且可能更容易实现和维护)
1)过滤控制器中的数据,并将带有过滤项目的变量暴露给原始ng-repeat - 然后您可以通过更改变量的内容来切换控制器中的完整或过滤数据暴露在范围内。
2)您还可以使用filter作为“数据用户”部分,例如“用户数据|过滤器:搜索”。