我正在使用 dojo 和cbtree的组合来构建带有复选框的树视图。因为数据在服务器上,所以我使用 JsonRest 存储来检索它。因为我不希望每个操作都转到服务器,所以 JsonRest 与缓存中的内存相结合。
一个简化的示例如下所示:
define([
'dojo/_base/declare',
'dojo/store/JsonRest', 'dojo/store/Memory', 'dojo/store/Cache',
'cbtree/model/TreeStoreModel', 'cbtree/Tree'
], function(declare,
JsonRest, Memory, Cache,
TreeStoreModel, Tree) {
return declare(null, {
buildTree: function() {
var self = this;
this._memory = new Memory();
this._restStore = new JsonRest({
target: '/process_trees/',
getSelectedItems: function() {
var checkedIds = [];
array.forEach(self._memory.query(), function(item) {
if(item.checked || item.checked == 'mixed') {
checkedIds.push(item);
}
})
return checkedIds;
}
});
var cache = Cache(restStore, memory);
this._treeModel = new TreeStoreModel({
store: cache
});
}
})
}
在树的执行过程中,我检查了树中的一些项目,并在 Cache 中看到 put 函数被调用,其中新项目的已检查属性设置为 true,并且该值存储在内存中。
过了一会儿,我想得到所有检查的项目,所以我调用 getSelectedItems 函数,但是当我在函数中查看本地内存时,self._memory,即使我检查了几个项目,也没有检查一个项目。
有谁知道为什么会这样?