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

时间:2016-03-17 14:46:25

标签: javascript arrays angularjs recursion

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

<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>

在AngularJS中使用ng-repeat递归显示内联模板:

        $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);
                    }
                }
            }
        }

一切正常。 现在我想从内部 ng-repeat 中删除一个项目。我可以使用 $ index 获取我点击(删除)项目的索引,还可以将对象 cond 作为参数 ng-click 。我也可以访问 $ parent ,但它指向对象的根目录...

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

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

编辑2016年3月21日

在接受答案之前,“蛮力”&#39;版本实现如下:

hashCode()

我希望它会帮助其他有类似问题的人。

3 个答案:

答案 0 :(得分:2)

您是否尝试将删除操作设为ng-click="cond=undefined"?这将清空已删除的条件。然后,您可以使用ng-show / ng-if来控制视图中的可见性。

答案 1 :(得分:1)

这就是我抓取多个索引的项目的方法:

{{1}}

我认为这就是你要问的?我希望它有所帮助。

答案 2 :(得分:0)

您可以将父数组和对象作为参数传递(例如:ng-click="delete(conditions, cond)&#34;)并使用.indexOf()函数来查找对象的索引(例如$scope.delete = function(conditions, cond){index = conditions.indexOf(cond)...} })