Angularjs 做角度';s内置服务与breezejs合作?

Angularjs 做角度';s内置服务与breezejs合作?,angularjs,breeze,Angularjs,Breeze,我正在测试角度/微风组合,我遇到 RangeError:超出了最大调用堆栈大小 当我使用angular的$watch和filter:searchText以及其他我假设所有属性都被检查的函数时,也会出现类似的错误 我很好奇我做错了什么。或者如果数组包含太多属性或其他内容 例如: <input type="search" ng-model="searchText" /> <div ng-repeat="station in stationsList | filter:searchT

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

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

当我使用angular的
$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>

{{station.name}}

其中,站点是从类似于
breeze.EntityQuery.from(“站点”)的查询中获取的。

编辑: 目前我正在这样做:

工作很好,但是控制器中有更多的代码

编辑2:


这也是一个,但是循环。

如果你看一个breeze实体,你会发现它不仅仅是一个典型的javascript对象,而是隐藏了backingStore和entityAspect下的所有内容。使用Chrome中的AngularJS Batarang,您可以更轻松地看到我所说的字段爆炸

当您尝试观察一个实体时,Angular所做的第一件事就是使用它自己的函数复制对象。这是一个递归函数,它试图探测entityAspect的深度

不幸的是,除了你已经发现的方法之外,我不知道还有什么其他方法。我只是在我想要的每个单独的属性上手动设置了一个手表,前面提到了对象相等

编辑:我不能评论,所以为了让它更清楚,这就是我手动设置它的意思,如下所示:

$scope.foo.integer1 = 4
$scope.foo.string2 = 'bar'
$scope.$watch('[foo.integer1, foo.string2]', someFunctionToHandleChange, true

不确定为什么在所有情况下使用过滤器都会更好?

@Hawk-即使您没有遇到实体循环引用,在角度上过滤(或查看)列表中所有对象的所有属性也是不明智的。所以这实际上是一个角度的问题,与微风有关

如果您打算对多个属性进行筛选,我建议使用第一个链接中所述的筛选功能。我个人不会像@Gendal建议的那样单独观看房产。也许s/he有一个用例,在该用例中,观察单个属性比过滤器更可取;我想不出这种情况

是的,这是更多的代码。人生就是这样