https://plnkr.co/edit/bpFi5WuojpNO2rh5vF3T?p=preview
请参阅Plunker中的自述文件,了解以下说明:
我想在“INJECT NEW”按钮下创建一个空白输入 被点击的那个,而不是最后的。
他们最终被添加的原因是:
<div ng-repeat="problem in problems track by $index">
track by $index
打破注射。
如果我拿出track by $index
,我就会收到错误消息:
https://docs.angularjs.org/error/ngRepeat/dupes?p0=problem%20in%20problems&p1=object:171&p2= {%22key%22:空,%22component%22:空,%22 $$ hashKey%22:%22object:171%22}
如何才能获得注入功能但不会出现错误?
答案 0 :(得分:3)
可以更改下面的方法并使其正常工作:
$scope.addMotFault = function(idx) {
if ($scope.problems.length > 1) {
// Now more than one item, we need to
// inject the additional one under the clicked item
// this index + 1
problemPrototype.key = idx + 1;
$scope.problems.splice(idx + 1, 0, angular.copy(problemPrototype));
} else {
// Only one item, so just push new problem
// no need to "inject"
problemPrototype.key = 0;
$scope.problems.push(angular.copy(problemPrototype));
}
};
HTML:
<div ng-repeat="problem in problems" style="border: 1px #ccc solid; margin:5px; padding: 5px">
我相信它会起作用。
答案 1 :(得分:0)
根据您的问题,我将向您发送所需的答案。
请查看附件链接并查看代码。你会找到解决方案。
https://plnkr.co/edit/nhqAnD1hSKuIs9HTsT30?p=preview
您可以先使用ng-if $ $,然后根据长度进行检查。
<button ng-click="removeMotFault($index)" ng-if="problems.length > 1">REMOVE</button>