1

我正在使用 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,即使我检查了几个项目,也没有检查一个项目。

有谁知道为什么会这样?

4

0 回答 0