我正在使用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函数,其中checked属性设置为true,此值存储在内存中。
过了一段时间我想得到所有被检查的项目,所以我调用了getSelectedItems函数但是当我查看函数self._memory中的本地内存时,即使我检查了几个,也没有检查过单个项目项目
有人知道为什么会这样吗?