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

标签 javascript arrays angularjs recursion

我在 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
    }]
}]

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

<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。我也可以访问 $parent 但它指向对象的根...

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

关于这个问题有什么建议吗?谢谢..

编辑 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);
                    }
                }
            }
        }

希望对遇到类似问题的人有所帮助。

最佳答案

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

关于javascript - AngularJS - 如何访问嵌套 ng-repeat 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063930/

相关文章:

javascript - 如何防止回调多次触发?

javascript - 按钮上的 Onclick 事件

c - 两种方式遍历INT数组

ios - 检查字符串是否包含数组中的任何字符串

c - 使用数组和 strcat 将字符附加到字符串

javascript - 如何创建仅应用一些过滤器的局部变量?

javascript - 当用户滚动时AngularJS切换路径

javascript - 访问 arguments 对象是昂贵的.. 是吗?

javascript - 使用 d3.js 制作分组条形图

javascript - 是否可以在 ng-repeat 中传递变量?