我正在尝试使用树的数据存储缓存。
我收到了未捕获的TypeError:object is not a function error.
我已对数据进行了测试,并且正在正确拉出数据。
我检查了JSON,它也是正确的。
我哪里错了?
require(["dojo/store/JsonRest"
, "dojo/store/Memory"
, "dojo/store/Cache"
, "dojo/json"
, "dijit/tree/ObjectStoreModel"
, "dijit/Tree"
, "dojo/domReady!"],
function (JsonRest, Memory, Cache, ObjectStoreModel, Tree) {
var restStore = new JsonRest({ target: "/DataStore/", idProperty: "id" });
var memoryStore = new Memory({
idProperty: "id",
getChildren: function (object) {
return this.query({ parent: object.id });
}
});
var store = new Cache(restStore, memoryStore);
store.query({ type: "index" }).forEach(function (item) {
console.log(item.name);
});
var docModel = new ObjectStoreModel(
{
store: store,
getRoot: function (onItem) {
this.store.get("index").then(onItem);
},
mayHaveChildren: function (object) {
return object.type === "folder" || object.type === "root";
}
});
var docTree = new Tree({
model: docModel,
onOpenClick: true,
onClick: function (item) {
if (item.type == "link") {
OpenLink(item.link);
}
},
persist: false
}, "divTree");
docTree.startup();
});
答案 0 :(得分:1)
这必须做A2
的工作方式。第一次调用Cache
时,它会使用返回store.get()
的{{1}}商店。 JsonRest
具有Promise
功能,因此没有问题。下次调用时,它会使用Promise
商店返回您的JavaScript对象本身。您的JavaScript对象没有then()
函数,因此会引发错误。这可以通过围绕Memory
中的then()
来修复。
尝试更改
store.get()
到
when()
查看here了解更多详情。