2015-01-01 176 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

讓我的小提琴有點混亂,但我認爲現在的鏈接 –