2016-08-26 59 views
0

https://plnkr.co/edit/bpFi5WuojpNO2rh5vF3T?p=preview

見的自述Plunker以下的解釋:

我想「注入新的」按鈕創建 下的一個空白輸入被點擊,而不是最後。

之後就被加在最後的原因是因爲:

<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

如果您不會通過$ index添加軌道,那麼您將得到重複錯誤 –

+0

正確。我想刪除的軌道,但允許它仍然「注入」 – beingalex

回答

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

是的,這應該工作。請查看此更新的[plunkr](https://plnkr.co/edit/V0YnYvfkIN19GBjWuKgN?p=preview)。 – AWolf

+0

完美。我有一個想法,我可能不得不使用angular.copy,但不知道如何。謝謝 – beingalex

0

根據你的問題,我向你發送所需的答案。

請找到附加的鏈接,並通過代碼。你會找到解決方案。

https://plnkr.co/edit/nhqAnD1hSKuIs9HTsT30?p=preview 你可以使用ng-if在原處$ first並且可以根據長度檢查。 <button ng-click="removeMotFault($index)" ng-if="problems.length > 1">REMOVE</button>

相關問題