2011-09-08 94 views
0

嗨,有人可以告訴我如何將一個數據存儲複製到另一個數據存儲。我以下面的方式嘗試了它,但它不起作用。在這裏,我嘗試將數據從jsonStore複製到newGridStore。克隆/複製dojo數據存儲

jsonStore.fetch({query:{} , onComplete: onComplete}); 

var onComplete = function (items, request) { 
    newGridStore = null; 
    newGridStore = new dojo.data.ItemFileWriteStore({ 
     data : {} 
    }); 
    if (items && items.length > 0) { 
    var i; 
    for (i = 0; i < items.length; i++) { 
     var item = items[i]; 
     var attributes = jsonStore.getAttributes(item); 
     if (attributes && attributes.length > 0) { 
      var j; 
      for (j = 0; j < attributes.length; j++) { 
       var newItem = {}; 
       var values = jsonStore.getValues(item, attributes[j]); 
       if (values) { 
        if (values.length > 1) { 
        // Create a copy. 
        newItem[attributes[j]] = values.slice(0, values.length); 
        } else { 
         newItem[attributes[j]] = values[0]; 
        } 
       } 
      } 
     newGridStore.newItem(newItem); 
     } 
     } 
    } 
} 
+0

在你這樣做之前。你能解釋你爲什麼要這麼做嗎? – Layke

+0

Becouse用新值更新jsonStore之後,我需要將它們與舊值進行比較 – nath

+0

然後你做錯了。看到我的答案。 – Layke

回答

1

根據上面提出的意見。您正在嘗試將值複製到新的商店,原因在於能夠檢測哪些值已更改,然後單獨保存它們,而無需發送整個商店。

這種方法是完全錯誤的。

Dojo有isDirty(),併爲您提供revert()商店的能力回到它的原始值。它知道哪些值已經改變,您不需要這樣做。

看看沼澤標準IFWS這裏:http://docs.dojocampus.org/dojo/data/ItemFileWriteStore

確保你從這裏讀到的一切:http://docs.dojocampus.org/dojo/data/ItemFileWriteStore#id8

你想要做的就是創建自己的_saveCustom方法,您將覆蓋你的店有哪些,然後當你保存時,你將能夠看到哪些值已經改變。

點擊頁面最底部的演示。它顯示了你如何使用_saveCustom