【发布时间】:2015-06-02 09:56:28
【问题描述】:
我已经修改了http://dojotoolkit.org/documentation/tutorials/1.10/store_driven_tree/demo/demo.html 的 dojo 教程以从 JsonRest 存储中读取。
问题是当我单击“将新子项添加到选定项目”时树显示不会更新,例如在根元素上,尽管更新在原始教程中有效。
我比较了 dojo/store/Memory(来自原始教程)和 dojo/store/JsonRest 在“put”请求之后返回的内容: 内存返回新对象的 id。 JsonRest 以“return xhr(...)”结尾,所以它返回一个 Deferred 而不是新的 id,这似乎不被 Observable 理解。如果我将 dojo/store/JsonRest.js 更改为以以下结尾,我可以让它工作:
...
return xhr(...).then(function(data){
return data.id;
};
}
希望有不修改dojo源的解决方案?!
更多细节如下:
这是我的 store 的定义,而不是原来的 Memory store:
var governmentStore = new JsonRest({
target : "http://localhost:8080/test/gov",
getChildren : function(object) {
return this.query({
parent : object.id
});
}
});
var governmentStore = new Cache(governmentStore,new Memory({}));
(如果我删除缓存并直接使用 JsonRest,即使修改后的 JsonRest.js 也不会使 Tree 更新)。
这是从 PUT 请求到 json 服务器的回复:
{"name":"New Child", "id":0.7243958345}
请帮助允许 dijit/Tree 对底层 JsonRest 存储的更改做出反应,而不会弄乱 dojo 源。
谢谢
多米尼克
【问题讨论】:
标签: dynamic dojo notify dijit.tree jsonreststore