我在JS遞歸陣列:AngularJS - 如何訪問一個嵌套的NG-重複一個數組裏面
[{
type: 'cond',
conditionId: 1,
conditions: undefined
},
{
type: 'cond',
conditionId: 2,
conditions: undefined
},
{
type: 'group',
conditionId: undefined,
conditions: [{
type: 'cond',
conditionId: 3,
conditions: undefined
},
{
type: 'cond',
conditionId: 4,
conditions: undefined
}]
}]
它採用NG-重複遞歸地與聯模板顯示在AngularJS:
<script type="text/ng-template" id="recursive_template.html">
<div> some logic </div>
<div ng-repeat="cond in cond.conditions" ng-include="'recursive_template.html'"></div>
<div> some more logic </div>
</script>
<div ng-controller="EditRulesController">
<div ng-repeat="cond in conditions" ng-include="'recursive_template.html'" class="row">
</div>
</div>
一切工作正常。 現在我想從內部刪除一個項目ng-repeat。我可以通過$ index以及對象cond作爲參數ng-click來點擊(刪除)的項目的索引。我還可以訪問$父但它指向的對象的根......
如何在沒有手動訪問內部陣列貫穿整個條件陣列遞歸搜索?奇怪的是,您可以輕鬆訪問內部數組的索引,但不能訪問實際的數組實例。
有關此問題的任何建議?謝謝。
編輯21/03/2016
接受的答案之前,「蠻力」的版本中實現這樣的:
$scope.deleteConditionClick = function (id) {
deleteCondition($scope.conditions, id);
};
function deleteCondition(conditions, id) {
var conds = conditions;
if (conds) {
for (var i = 0; i < conds.length; i++) {
if (conds[i].type === 'cond') {
if (conds[i].conditionId === id) {
conds.splice(i, 1);
return true;
}
} else if (conds[i].type === 'group') {
deleteCondition(conds[i].conditions, id);
}
}
}
}
我希望這會幫助別人有類似的問題。
您無法以cond.conditions.type,cond.conditions.conditionId的身份訪問它嗎? –
'$ parent。$ parent' - 'ngInclude'正在您的父母重複和您的孩子重複之間創建另一個*範圍。 – tymeJV
'$ parent。$ parent'給了我控制器範圍,所以數組的根就是了。 –