2014-05-19 55 views

回答

1

從我看到的,你可以得到當前選定節點的id,它已經是父母ID的串接。

更換

<div data-bind="with: selected"> 
    Selected Node:     <span data-bind="text: name"></span> 
    </div> 

隨着

<div data-bind="with: selected"> 
    Selected Node:     <span data-bind="text: name"></span> 
    Ids: <span data-bind="text: id"></span> 
    </div> 

如果你想與所有父ID的數組,你可以做到以下幾點:

  1. parent屬性添加到每個樹節點( parent)並將其填入構造函數
  2. 加入母公司IDS(parentIds
  3. 陣列創建一個函數,將通過所有的樹節點,並填補了parentIds陣列

檢查這個代碼(1。 & 2):

function TreeNode(values) { 
     var self = this; 
     ko.mapping.fromJS(values, { children: { create: createNode }}, this); 
     this.expanded = ko.observable(false); 
     for (var i = 0; i < this.children().length; i++) 
      this.children()[i].parent = this; 
     this.parentIds = []; 
     this.collapsed = ko.computed(function() { 
     return !self.expanded(); 
    }) 
    } 

這(3):

function setParents(rootNode) { 
    if (ko.isObservable(rootNode.children) && rootNode.children().length) 
     for (var i = 0; i < rootNode.children().length; i++) { 
     if (rootNode.children()[i].parent) 
      rootNode.children()[i].parentIds = rootNode.children()[i].parent.parentIds.slice(0); 
     rootNode.children()[i].parentIds.push(rootNode.children()[i].parent.id()) 
     setParents(rootNode.children()[i]); 
     } 
    } 

    setParents(root); 

您可以檢查here

+0

感謝您的答覆,我想所有的父節點ID。 在這種情況下,如果我點擊ID爲「1.1.2」 >>我要像 1 >> >> 1.1 1.1.2 –

+0

結果的節點上是有辦法以相反的順序來遍歷並獲得所有的所選項目的父母ID? –

+0

我更新了答案 –

相關問題