Angular的内置服务与breezejs一起使用吗?

时间:2013-07-08 13:08:58

标签: angularjs breeze

我正在测试角度/微风组合,我遇到了

  

RangeError:超出最大调用堆栈大小

当我使用angular $watchfilter: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?

这一个,但循环。

2 个答案:

答案 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。