2016-06-01 111 views
2

我想用一個對象數組寫一個ng-repeat,在ng-repeat屬性中定義數組,但由於某種原因它只是無限地重複輸出。
我把它歸結爲與最後一部分相關的問題;在線進行。Inline ngRepeat對象數組

<span ng-repeat="item in [{test:'a'}, {test:'b'}, {test:'c'}]">{{item.test}}</span> 

result of above on my server

Error: [$rootScope:infdig]一堆錯誤的在控制檯中露面。
有趣的是,儘管我運行的是1.2,但無論我在jsfiddle中選擇哪個角度版本,它都可以正常運行。

result of jsfiddle testing

不過的jsfiddle控制檯仍然有錯誤Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!淹沒,這樣做不僅爲對象的數組,但陣列(TEST5)的陣列。

我試圖在一個解決方法test5中保存var,真的很有趣,因爲如果你註釋掉ng-repeat,it saves the scope variable fine沒有錯誤。
但是,當您嘗試使用該變量時,that is where it dies。這很有趣,因爲那基本上是test3,它會順利地結束。

所以它必須是我想要做的一件事情,有variable come from the html(而不是在js中預先存在)。因此,爲了殺死摘要循環,我嘗試將小提琴切換到v1.4以使用one time bindingit still fails(控制檯錯誤明智)。

其他人seem to have hit the issue,但在自己的圖書館固定它,而不是報告在其上游

有什麼辦法,我得到這個工作正常?

+0

你可以在'ng-repeat'中調用'$ evalAsync()'或類似的函數嗎? – Asqan

+0

nope。小提琴就在那裏,而[代碼開頭]的代碼段就是你需要看到它發生的事情。它在小提琴中顯示'正確'的唯一原因是因爲摘要深度被限制,所以它在第一次迭代後立即出錯 – Hashbrown

回答

2

看看這段代碼。

<!--what I actually want to work--> 
    <span ng-init="test10 = [{'text':'but'}, {'text':'this'}, {'text':'refuses'}, {'text':'to'}, {'text':'work'}]"></span> 
    <span ng-repeat="item in test10">{{item.text}} </span> 

使用ng-init,您可以從視圖中設置一個範圍變量。

希望它有幫助!

+0

我不能相信我忘記了init,那很好吃。謝謝,[完美的作品](https://jsfiddle.net/mhgzdjjz/5/)。吮吸你不能把'ng-init'放在同一個div中,但至少我可以使它更清晰一些,因爲它允許每個init有多個聲明 – Hashbrown