我正在测试角度/微风组合,我遇到了
当我使用angularRangeError:超出最大调用堆栈大小
$watch
和filter:searchText
以及我认为所有属性都被检查的其他函数时,和类似的错误
我很好奇我做错了什么。或者,如果数组包含太多属性或其他内容。
示例:
<input type="search" ng-model="searchText" />
<div ng-repeat="station in stationsList | filter:searchText" class="view-list">
<p>{{station.name}} </p>
</div>
其中来自breeze.EntityQuery.from("stations")
编辑: 目前我正在这样做: Filtering by Multiple Specific Model Properties in AngularJS (in OR relationship)
效果很好,但控制器中的代码更多。
编辑2: How to apply a filter on multiple objects using AngularJS?
这一个,但循环。
答案 0 :(得分:1)
如果你看一个轻微的实体,你可以看到它不仅仅是一个典型的javascript对象,而是隐藏在_backingStore和entityAspect下的所有东西。在Chrome中使用AngularJS Batarang,您可以更轻松地看到我正在讨论的字段爆炸。
当您尝试观看实体时,Angular所做的第一件事是使用它自己的函数复制对象。这是一个递归函数,试图探测entityAspect的深度。
不幸的是,除了你已经发现的方法外,我还不知道。我只是在我想要的每个单独的属性上手动设置一个监视,前面的对象相等。
编辑:我不能发表评论只是为了让它更清楚这就是我的意思,通过手动设置它给出如下内容:
$scope.foo.integer1 = 4
$scope.foo.string2 = 'bar'
$scope.$watch('[foo.integer1, foo.string2]', someFunctionToHandleChange, true
不确定为什么在所有情况下使用过滤器会更好?
答案 1 :(得分:0)
@Hawk - 即使你没有遇到实体循环引用,在Angular中很少能过滤(或观察)列表中所有对象的所有属性。所以这实际上是一个角度问题,切向涉及Breeze。
如果您打算过滤多个属性,我建议使用第一个链接Filtering by Multiple Specific Model Properties in AngularJS中所述的过滤功能。我个人不会像@Gendal建议的那样单独看属性。也许他/她有一个用例,其中观察个人属性优于过滤器;我想不出这样的情况。
是的,这是更多的代码。 Ce la vie。