2011-07-26 47 views
0

我正在用JavaScript設計一棵樹,我試圖加載一個節點,存儲在服務器的json文件中。用json動態加載一棵樹

僞代碼的JavaScript:

var nodeRoot = 
{ 
    level: 4, 
    id: 12, 
    data: ..., 
    childs: Array() // the nodes, all similar to the root, but of level n-1 
} 

function downloadNodeData(_node){ 
    //initializing the request 
    req.onreadystatechange= 
     function(){ 
      //testing the request 
      var nodeResult = eval("("+req.responseText+")"); 
      console.log(nodeResult); 
      // ----- What now ? ----- 
     } 
    req.send(null); 
} 

我可能會調用幾個地方這個功能(這個想法是動態加載樹節點,根據用戶行爲)。

問題是,一旦請求返回,我就找不到任何方法來更新被調用的節點的值。

SetNodeByLevelAndId(_node,_level,_value)是唯一的方法嗎?

謝謝你的幫助。

回答

0

在nodeRoot的描述中沒有屬性值。 你想更新_node(給你的函數的參數)。

如果是通過nodeResult替換_node,則必須將nodeResult的屬性逐個複製到_node。因爲參考_node的其他節點將使用舊的參考,如果您分配

_node = nodeResult 
+0

我不明白。我想更新給函數的節點(更準確地說是字段數據和子節點)。你在說如果我做了_node.data = nodeResult.data,那麼原來的節點(它被傳遞給函數)將會更新其字段數據? –

+0

是的,逐個替換屬性的作品。我絕對需要習慣JavaScript。謝謝 ! –