【发布时间】:2014-02-01 17:15:59
【问题描述】:
尝试在具有隔离范围的指令上使用过滤器:
<div tags="p.tags | refTags"></div>
导致$digest循环无限循环:
当应用程序的模型变得不稳定并且每个 $digest 循环都会触发状态更改和后续的 $digest 循环时,会发生此错误。 Angular 会检测到这种情况并防止无限循环导致浏览器无响应。
.directive 'tags', ->
restrict: 'A'
scope:
tags: '='
templateUrl: 'partials/tags.html'
.filter 'refTags', ->
(tags) ->
['a filtered', 'array of values']
partials/tags.html
<ul>
<li ng-repeat="tag in tags">{{tag.tag}}</li>
</ul>
控制器中的 p.tags
p.tags = ['HTML5', 'CSS', 'JavaScript', 'Angular JS', 'Backbone JS', 'Node JS', 'SASS + Compass', 'Oragami', 'Running', 'Cat Food', '#catfood']
这种行为正常吗?
- 不能对传入指令隔离范围的值使用过滤器吗?
- 有解决办法吗?我需要过滤数组值
- 还有其他设计不同的解决方案吗?
【问题讨论】:
-
这不是完整的 refTags 过滤器吗?你能分享那个代码吗?
-
是的,就是这样。如果这引起任何混乱,那就是咖啡脚本
-
所以您的过滤器实际上返回了一个数组,其中包含两个项“过滤”和“值数组”......它实际上是如何过滤这些值的?
-
=是双向绑定,如果被过滤了怎么绑定回来?我会想象它正在绑定到 p.tags,再次触发过滤器,更新值,然后绑定再次触发过滤器......一遍又一遍 -
@Janathan Rowny 没有过滤发生我只是在测试