Angularjs 不允许中继器中出现重复的ng中继器问题
我试图创建一个如下的表单,在angular中使用ng repeat指令,每当我创建新行时它都会抱怨 “中继器中不允许重复。” 虽然我理解解决方案是通过放置“track by$index”,但它会导致另一个问题,即单击一行上的delete删除其他字段的值。所以我怀疑trackbyindex对于静态文本是可以的,但对于输入表单则不行。那么,如何在我的案例中正确使用ng repeat?请参阅我的演示 我当前的代码: HTMLAngularjs 不允许中继器中出现重复的ng中继器问题,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我试图创建一个如下的表单,在angular中使用ng repeat指令,每当我创建新行时它都会抱怨 “中继器中不允许重复。” 虽然我理解解决方案是通过放置“track by$index”,但它会导致另一个问题,即单击一行上的delete删除其他字段的值。所以我怀疑trackbyindex对于静态文本是可以的,但对于输入表单则不行。那么,如何在我的案例中正确使用ng repeat?请参阅我的演示 我当前的代码: HTML <div class="row-fluid spacer10">
<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>
只要改变你迭代的方式。与此相反:
<div ng-repeat="item in aliasList track by $index">
有关正确的解决方案,请参见此您的方法存在多个问题 由于您直接将字符串绑定到ng模型,并且ng repeat创建了一个子范围,因此对该值的任何更改都不会反映出来。将范围模型更改为
$scope.list = [{text:"one"},{text:"two"}];
并绑定到i.text
,而不是像前面那样绑定到i
使用item而不是index调用了deleteItem方法。看到我的小提琴了吗
您能检查$index是基于0还是基于1吗。如果$index是基于1的,那么您需要执行
拼接(idx-1,1)代码>否则它应该可以工作。$索引始终以角度为基础为0。看我的书
<div ng-repeat="item in aliasList">
<button ng-click='deleteItem($index)'>Delete</button>
$scope.list = [{text:"one"},{text:"two"}];