您可以告诉我如何在dojo中将一个数据存储复制到另一个数据存储。我按照以下方式尝试了它,但它不起作用。在这里,我尝试将数据从jsonStore复制到newGridStore。
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 :(得分:1)
基于上面提到的评论。您试图将值复制到新商店,原因是能够检测哪些值有更改,然后单独保存,而不必发送整个商店。
这种做法完全错误。
Dojo拥有isDirty()
,并且您可以revert()
将商店恢复为原始价值。它知道哪些值已更改,您无需执行此操作。
在这里查看沼泽标准IFWS:http://docs.dojocampus.org/dojo/data/ItemFileWriteStore
请务必阅读此处的所有内容:http://docs.dojocampus.org/dojo/data/ItemFileWriteStore#id8
您要做的是创建自己的_saveCustom
方法,您将覆盖您的商店,然后在保存时,您将能够看到哪些值已更改。
点击页面底部的演示。它使用_saveCustom
显示了它是如何做到的