Dojo在缓存中存储重复

时间:2013-08-23 12:50:49

标签: javascript dojo

我正在使用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中的本地内存时,即使我检查了几个,也没有检查过单个项目项目

有人知道为什么会这样吗?

0 个答案:

没有答案