【发布时间】:2018-05-07 23:39:55
【问题描述】:
我有一个简单的ng-repeat 从一个 javascript 数组构建一个 HTML 列表。
可以使用输入移动每个项目以获得新排名。此输入绑定到变量rank。该变量使用ng-init 指令初始化。
代码如下所示:
<li ng-repeat="item in ctrl.getItems()">
<div ng-init="rank = $index">
[$index: {{$index}}]
{{item}}<br/>
<label>
Move to
<input type="number" ng-model="rank"/>
</label>
<button type="button" ng-click="ctrl.moveItem($index, rank)">
Ok
</button>
</div>
</li>
在运行时,当我更改输入值并单击 Ok 按钮时,会调用函数 ctrl.moveItem 并且项目会真正移动到 ctrl.getItems() 数组中。
所以ng-repeat 被重播,项目以新顺序出现。
但是变量 rank 未重新初始化,出现 2 个具有相同排名的项目。
样本在这里:https://jsfiddle.net/nlips/4ng34b7b/
我的问题不在于移动列表中的项目,而是我需要了解 ng-init 在 ng-repeat 上下文中的工作原理。
我在 AngularJS 官方文档中没有找到关于这个主题的任何内容。
【问题讨论】:
标签: angularjs angularjs-ng-repeat