我正在尝试在具有两个主要组件的 EXTJ 中创建一个网页:
- 表单(Ext.form.Panel)
- 面板(Ext.tree.Panel)
该表单应该获取一些值,这些值应该填充第二个面板中的树。在第一个面板的按钮处理程序中,我可以访问更新的 JSON 对象,但我无法找到刷新 TreeStore 的方法,该方法将更新 tree.Panel 中的显示。
这是我到目前为止所拥有的:
Ext.define('TreeServiceData',{
config:{
data : ''
},print : function() {
console.log("Printing data: ")
console.log(this.data.children[0])
}
});
var dataObject = Ext.create('TreeServiceData');
dataObject.setData({'expanded':false,'children':[{'text':'Master','expanded':true,'leaf':false,'children':[{'text':'Child 1','expanded':true,'leaf':false,'children':[{'text':'Child 2','expanded':true,'leaf':false,'children':[{'text':'Child 3','expanded':false,'leaf':false}]}]}]}]})
Ext.define('TreeStoreData',{
extend: 'Ext.data.TreeStore',
model: 'TaskModel',
autoLoad: true,
autoSync: true,
proxy: {
type:'memory',
reader: {
type:'json'
}
},
root:dataObject.getData()
});
var treeStore = Ext.create('TreeStoreData');
现在我正在尝试在按钮调用上更新和显示这个树存储的值,如下所示:
buttons:[
{
text:'Get CCP/Product',
handler:function (btn, evt) {
dataObject.print();
treeStore.removeAll();
dataObject.setData({'expanded':false,'children':[{'text':'Master11','expanded':true,'leaf':false,'children':[{'text':'Child 12','expanded':true,'leaf':false,'children':[{'text':'Child 23','expanded':true,'leaf':false,'children':[{'text':'Child 34','expanded':false,'leaf':false}]}]}]}]})
dataObject.print();
}
}
]
但是在这个按钮处理程序上,我总是在 treeStore.removeAll() 方法上得到一个“Uncaught TypeError: Cannot call method 'indexOf' of undefined”,在这个上下文中明确定义了 treestore。
问题 1) 刷新 TreeStore 的正确方法是什么?