我想出了在角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