2016-06-01 76 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