TreeStore:autoLoad配置和load()函数之间的不同行为

时间:2016-03-16 20:22:52

标签: extjs5

fiddle中的测试用例正在使用autoLoad: true,但是使用autoLoad: false(第86行),TreePanel beforerender事件中第161行调用的load()函数不会加载数据...

对于(非树)面板,我总是将autoLoad设置为false并在GridPanel的渲染上加载商店,它完美地运行。我是这样做的,以防止在开始时加载所有商店(并有时设置过滤器) 商店的beforeload事件阻止了双重加载。

这个TreeStore我的错在哪里?我正在寻找一个没有任何结果的解决方案......

2 个答案:

答案 0 :(得分:1)

在这里解释的Ext JS 4中存在类似的问题ExtJS 4. Hidden treepanel with autoload false

我在你的小提琴中所做的是我刚刚添加了以下内容

  autoLoad: false,
  root:{
    //expanded: true, // optional
    children: []
  }

到商店配置中的第91行。一切都神奇地起作用。

答案 1 :(得分:0)

我想我已经解决了你的问题。

使用TreeStore的root属性。

/*
 * Store
 */
Ext.define('Chronos.store.Clockings', {
    extend  : 'Ext.data.TreeStore',
    requires: [
        //'Chronos.store.Session'
    ],
    model       : 'Chronos.model.Presence',
    autoLoad    : false, //true, // false,
    //autoSync    : true, // DEBUG
    sortOnLoad  : false,
    pageSize    : 0,
    remoteFilter: true,

    root: {
       id: 'id',
       expanded: true
    },

    listeners: {
        load: function(treestore, records, success) {
            console.log(Date(), 'clockings loaded: ', success, treestore);
        },
        beforeload: function (treestore) {            
            if(treestore.isLoading()) return false;        
        }
    }
});

希望这就是你要找的东西!