2015-01-01 128 views
3

我无法找到一个很好的适合指令创建从一个JSON结构复选框的树视图,所以我做了这个一个自我调用迭代器,如下所示:角复选框

http://jsfiddle.net/u2ho9d3j/

现在,我已经得到了唯一的问题是,(看“牛仔裤”在第40行数据,有这样的:

"chk": true, 

这并不当然标志着“牛仔裤” -checkbox,但不是上面的,这些值会从数据库中正确的(甚至是数据库)上面的bransch会有chk = true,但是我很好奇,如果某个项目被标记为“true”,那么可以触发最初的“冒泡并将所有父母标记为已选中”。

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

非常感谢!

克里斯托夫

回答

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/

+0

哇,谢谢,不错!还有一件事:我怎样才能提交这个表单,并获得所有的检查框的身份证,任何想法?我可以在http文章中抓取什么,并将数据作为数据发送到后端服务? – chrney

+0

鉴于您绑定复选框的方式,您可以循环遍历原始$ scope.tree中的项目,并取出选中的项目。看到上面的第二个小提琴的链接。 –

+0

让我的小提琴有点混乱,但我认为现在的链接 –