【发布时间】:2014-05-23 03:54:33
【问题描述】:
我正在尝试创建一个如下所示的表单,这在 Angular 中使用 ng-repeat 指令,每当我创建新行时它都会抱怨 “不允许在转发器中重复。”。
虽然我理解解决此问题的方法是输入"track by $index",但它会导致另一个问题,即单击一行上的删除会删除其他字段的值。所以我怀疑按索引跟踪对于静态文本但不是输入表单是可以的。那么如何为我的案例正确使用 ng-repeat 呢?
我的 jsfiddle :demo.
编辑:我知道对象的 json 数组将解决我的问题(因为对象角度创建 $$hashKey )并且已经为我的大多数其他模块实现了这个。但我实际上期待一些可以在不真正改变我的 json 字符串数组的情况下完成的修复。抱歉没有说清楚。
我当前的代码:
HTML
<div class="row-fluid spacer10">
<a ng-click="addAKA()" class="btn btn-primary spacer5 left30"><i class="icon-plus icon-white"></i> Add New Alias</a>
</div>
<div class="row-fluid spacer10"></div>
<div class="row-fluid spacer5" ng-repeat="item in aliasList track by $index">
<input type="text" class="span6 left30" ng-model="item">
<button class="btn btn-danger" ng-click="deleteAKA($index)">delete</button>
<BR/>
</div>
Javascript
$scope.addAKA = function ()
{
if($scope.aliasList == null)
{
$scope.aliasList = [];
}
$scope.aliasList.push("");
$scope.aliasjson = JSON.stringify($scope.aliasList);
}
$scope.deleteAKA = function (idx)
{
var aka_to_delete = $scope.aliasList[idx];
$scope.aliasList.splice(idx, 1);
$scope.aliasjson = JSON.stringify($scope.aliasList);
}
【问题讨论】:
标签: angularjs angularjs-directive