AngularJS - 如何访问嵌套ng-repeat中的数组

Bic*_*bor 5 javascript arrays recursion angularjs

我在js中有一个递归数组:

[{
  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
    }]
}]
Run Code Online (Sandbox Code Playgroud)

它使用ng-repeat递归显示在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>
Run Code Online (Sandbox Code Playgroud)

一切正常.现在我想从内部ng-repeat中删除一个项目.我可以得到我点击(删除)与项目的索引$指数,也是对象COND作为参数NG-点击.我也可以访问$ parent但它指向对象的根...

如何在不手动搜索整个条件数组的情况下访问内部数组?奇怪的是,您可以轻松访问内部数组的索引,但不能访问实际的数组实例.

关于这个问题的任何一个建议?谢谢..

编辑2016/03/21

在接受答案之前,"暴力"版本的实现方式如下:

        $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);
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我希望它能帮助其他有类似问题的人.