我希望我的输出读取
0
01
012
0123
01234
etc...
我期待我编写的这个简单代码可以解决这个问题,而是打印
01111111111 011111111111
02222222222 022222222222
03333333333 033333333333
04444444444 044444444444
05555555555 055555555555
06666666666 066666666666
为什么会这样?
这是我的Angular代码:
<div ng-app="App" ng-controller="ctrl">
<div ng-repeat="num in [1, 2, 3, 4, 5, 6]">
<label>{{previousNumber}}</label>
{{previousNumber = (previousNumber + "" + num)}}
</div>
</div>
这是JSFiddle: http://jsfiddle.net/fd1f6yso/2/
答案 0 :(得分:1)
当你同时$watch
- {{previousNumber}}
- 并且对表达式previousNumber
的每次评估都修改{{previousNumber = (previousNumber + "" + num)}}
时,你会进入一个无限循环 - Angular在10之后会阻止迭代$digest
。
要实现您想要的目标,您需要在ng-repeat
的外部范围内使用变量来保持增加的字符串,并在每个ng-repeat
的子(内部)范围内使用局部变量使用ng-init
:
<div ng-init="label = ''">
<div ng-repeat="num in [1, 2, 3, 4, 5] track by $index"
ng-init="$parent.label = $parent.label+''+num; thisLabel = $parent.label">
<label>{{thisLabel}}</label>
</div>
</div>
由于文字的原型继承如何运作,您需要使用$parent.label
(而不是label
)。
应该注意的是,虽然这对于智力锻炼来说是好的,但我不建议在实际开发中使用它。