【问题标题】:Angular checkboxes in tree view树视图中的角度复选框
【发布时间】:2015-02-28 07:45:47
【问题描述】:

我找不到一个非常合适的指令来创建带有来自 JSON 结构的复选框的树视图,因此我使用自调用迭代器来执行此操作,如下所示:

http://jsfiddle.net/u2ho9d3j/

现在,我遇到的唯一问题是(查看第 40 行中的“牛仔裤”数据,是这样的:

"chk": true,

这当然会标记“牛仔裤”复选框,但不是上面的。这些值将从数据库中正确获取(即使是上面的分支也会有 chk = true,但我仍然很好奇如果一个项目被标记,如何触发最初的“冒泡并将所有父母标记为已检查”作为“真实”。

有人可以帮助我了解如何做到这一点吗?

非常感谢!

克里斯托夫

【问题讨论】:

    标签: javascript angularjs recursion checkbox tree


    【解决方案1】:

    我会以类似于您的 setData 函数的递归方式预处理树数据:

     function initTree(tree) {
       function processNode(node) {
         angular.forEach(node.children, function(child) {
           if(processNode(child) === true) {
             node.chk = true;   
           }
         });
    
         return node.chk;
       }
    
       angular.forEach(tree, processNode);
     };
     initTree($scope.tree);
    

    查看更新的小提琴http://jsfiddle.net/65yucqge/

    编辑 这是另一个小提琴,展示了如何将复选框数据放入数组中: http://jsfiddle.net/tmakin/kmhw1ue0/

    【讨论】:

    • 哇,谢谢,好人!还有一件事:我怎样才能将其作为表单提交并获取复选框的所有 ID,知道吗?我可以在 http 帖子中抓取什么,并将其作为数据发送到后端服务?
    • 鉴于您绑定复选框的方式,您可以遍历原始 $scope.tree 中的项目并拉出选中的项目。请参阅上面第二小提琴的链接。
    • 让我的小提琴有点混乱,但我认为链接现在是正确的
    • 无语。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 2014-05-14
    • 1970-01-01
    • 2015-05-30
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多