我想出了在角1.3一个非常怪异的行为:怪异的行为角1.3时NG-重复拷贝项目
它发生时,我改变
{{item}}
到:
{{::item}}
并点击“复制”按钮;它想要做的是复制给定索引处的项目并将其放在源项目下。它所做的是复制列表中的最后一项并将其添加到列表的底部!
HTML:
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<ul>
<li ng-repeat="item in items track by $index">{{::item}}</li>
</ul>
<input ng-model="newItem" type="text"></input>
<button ng-click="add(newItem)">Add</button>
<button ng-click="copy(newItem)">Copy</button>
</div>
</div>
的JavaScript:
var app = angular.module('myApp', []);
app.controller('MyCtrl', function($scope) {
$scope.items = ["A", "B", "C", "D"];
$scope.add = function(item) {
$scope.items.push(item);
};
$scope.copy = function(item) {
var newItem = angular.copy($scope.items[parseInt(item)]);
$scope.items.splice(parseInt(item) + 1, 0, newItem);
};
});
任何人都知道什么是引擎盖下回事?
这里是一个小提琴:http://jsfiddle.net/v87kgwud/14/
它如何知道索引? –
如果您打开JSFiddle;因为您可以看到该项目应该在文本框中输入。 I.E.当您键入0并单击复制时,它应复制“A”并将其放在源项目下。 –
基本上,我认为AngularJS不会在DOM中插入一个新项目,它只会在最后插入它,并更新相应的作用域。但由于文本内容不能改变(因为一次性绑定),所以在复制之前和之后都看不到差异。我仍然在为您寻找解决方案,以及我正在说的一些证据。 – Blackhole