如何刷新树存储?
我试着这样做:
Ext.getStore('myStore').setRootNode({child: []});
然后商店将要求服务器生孩子,但有时它会给我一个双倍的孩子。 在我的树中,我得到类似的东西:
child1
child2
child1
并且还有一个javascript错误:
Uncaught TypeError: Cannot read property 'internalId' of undefined
Ext.define.updateIndexes ext-all-debug.js:61588
Ext.define.onAdd ext-all-debug.js:61513
Base.implement.callParent ext-all-debug.js:3728
这是一个错误还是我做错了什么?
答案 0 :(得分:1)
我不确定你使用的是什么版本的extjs但是这里是我如何使用load方法在4.1中刷新我的商店(你可能有也可能没有参数,我有一个):
this.getStore('MyTreeStore').load({ params: { id: this.getId().getValue()} });
使用新记录刷新商店,不存在任何先前加载的重复记录。
我的商店设置如下:
Ext.define('MyApp.store.MyTreeStore', {
extend: 'Ext.data.TreeStore',
model: 'MyApp.model.MyTreeModel',
root: {
children: []
},
proxy: {
type: 'ajax',
url: '/MyApp/Chart/GetTree'
},
fields: [
{ name: 'id', type: 'int' }
]
});
我的树看起来像这样:
Ext.define('MyApp.view.chart.MyTree', {
extend: 'Ext.tree.Panel',
alias: 'widget.mytree',
id: 'MyTree',
store: 'MyTreeStore',
width: 350,
height: 320,
border: false,
rootVisible: false,
singleExpand: true
});