2013-07-08 44 views
2

我測試的角度/微風組合和我遇到Angular的服務是否與breezejs一起工作?

RangeError: Maximum call stack size exceeded

和類似的錯誤,當我使用角度的$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?

這一個了,但循環。

回答

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 

不知道爲什麼使用過濾器會在所有的更好案件?

0

@Hawk - 即使您沒有遇到實體循環引用,Angular也很少明智地過濾(或觀察)列表中所有對象的所有屬性。所以這實際上是一個角度問題,切合Breeze。

如果您打算在多個屬性上進行過濾,我建議您在第一個鏈接Filtering by Multiple Specific Model Properties in AngularJS中描述過濾功能。我個人不會像@Gendal提議的那樣單獨觀看房產。也許他/她有一個使用案例,其中觀察單個屬性比過濾器更可取;我想不出這種情況。

是的,它是更多的代碼。 Ce la vie。

相關問題