【发布时间】:2013-10-11 07:38:35
【问题描述】:
我定义了一个 treepanel 扩展 extend: 'Ext.tree.Panel' 并具有类似的 initComponent 函数
Ext.define('Example', {
extend: 'Ext.tree.Panel',
title: 'Example',
useArrows:false,
rootVisible: false,
border: false,
initComponent: function () {
var store = Ext.create('Ext.data.TreeStore', {
fields: [
{name: 'id', type: 'string'},
{name: 'text', type: 'string'}
],
autoLoad : false, // not working
proxy: {
type: 'ajax',
url: 'data.php',
reader: {
type: 'json',
root: 'results'
}
}
});
this.store = store;
this.callParent(arguments);
}
});
我尝试设置autoLoad: false,但是当我创建treepanel时总是加载
当我尝试配置下面的代码来存储然后autoLoad: false 工作但我的treepanel 加载后是空白的
root: {
text: 'Ext JS',
id: 'src',
expanded: false // this
}
如果不使用 root 配置,我的 json 很好并且可以工作
({ "results": [
{
id : '1' ,
text : '1',
expanded: true,
results :[{
id : '2' ,
text : '2',
leaf:true
}]
},{
id : '3' ,
text : '3',
leaf:true
}]
})
如何解决这个问题。
【问题讨论】:
-
autoLoad 属性只绑定到存储本身。我猜你的情况是一个组件触发了负载。如果您想要完全控制,您可以使用
beforeload事件检查每个负载,如果不是valid,则返回 false -
@sra 如何检查是否不是
valid,你是什么意思?但是为什么我的代码失败了,autoLoad : false不工作:( -
请参考autoLoad 的文档请注意,如果
true,商店将在创建后加载。只创建没有树形面板的商店,您会看到商店在创建后没有加载。 -
@sra 如果使用
beforeload,我认为这很难理解。我在store中使用root: { results: [] }然后autoLoad: false工作但是当我load()我的treepanel是空白的?