我正在把这头发拉出来......
我有一些网格视图,一个商店和一个viewModel。我需要在不同的网格中使用不同的过滤版本的商店,所以我试图将每个过滤的商店绑定到网格。现在我甚至无法让商店首先加载到网格中......
以下是我的代码:
商品
Ext.define('My.store.Admin.Kinder', {
extend: 'Ext.data.Store',
model: 'My.model.Kind',
storeId: 'adminKinderStore',
alias: 'store.adminKinder',
proxy: {
type: 'ajax',
method: 'post',
url: '/getKinder',
reader: {
type: 'json',
rootProperty: 'kinder'
}
}
});
视图模型:
Ext.define('My.model.kindViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.kindViewModel',
requires: [
'My.model.Kind',
'My.store.Admin.Kinder'
],
view: 'kindView',
stores: {
warteliste: {
type: 'adminKinder'
}
}
});
查看:
Ext.define('My.view.Admin.kinder', {
extend: 'Ext.panel.Panel',
alias: 'widget.kindView',
id: 'kinder-panel',
requires: [
'My.view.Admin.kindController',
'My.model.kindViewModel'
],
controller: 'kind',
border: false,
maxWidth: 960,
session: My.session,
viewModel: {
type: 'kindViewModel'
},
initComponent: function() {
this.activeTab = 'warteliste-tab';
this.callParent();
},
items: [
{
xtype: 'grid',
id: 'warteliste-grid',
bind: {
store: '{warteliste}'
},
border: false,
margin: '0 0 20px 0',
selModel: {
allowDeselect: true
},
columns: [
// some grid columns
],
listeners: {
afterRender: function(grid) {
grid.store.load();
}
}
}]
});
我收到一条错误消息“无法修改ext-empty-store”,这必须意味着在afterRender侦听器中调用store.load()时,商店尚未绑定。 奇怪的是,当我在console.log网格时,商店就在那里。当我在console.log grid.store时,返回一个空商店。
答案 0 :(得分:11)
我在afterRender事件中遇到了同样的问题,并通过不从网格中获取商店来解决它
grid.store.load();
但是来自ViewModel(ViewController范围):
this.getViewModel().getStore('{warteliste}').load();
答案 1 :(得分:1)
检查商店是否在viewmodel中按预期创建。通常,我们在./store
目录中没有商店定义文件,但我们将其配置放在viewmodel中。
请在此处查看示例:http://extjs.eu/ext-examples/#bind-grid-form - MainModel::stores
原始问题的解决方案
我需要在不同的网格中使用不同的商店过滤版本
是连锁店。
请参阅此处的实施示例:http://extjs.eu/on-chained-stores/
答案 2 :(得分:0)
对我来说是
myGrid.getViewModel().getStore('myStoreName').load();