ExtJs 6 商店在网格中不可见
ExtJs 6 Store not visible in Grid
我正在尝试将现有应用程序从 ExtJs 4.2.1 移植到 6.0.1
在调试器中我看到网格有 'ext-empty-store' 存储而不是 'store.accounting.Quota' 的问题
我可以通过执行直接在面板激活侦听器中加载商店
var store = Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota');
store.load();
在 firebug 中,我看到了请求和完美的 json 响应,但网格中没有任何内容
这里是代码片段
app/store/accounting/Quota.js
Ext.define('QuotaKPI.store.accounting.Quota', {
extend: 'Ext.data.JsonStore',
model: 'QuotaKPI.model.accounting.QuotaModel',
alias: 'store.accounting.Quota',
storeId: 'QuotaKPI.store.accounting.Quota',
autoLoad: false,
proxy: {
...
}
});
app/view/accounting/QuotaGrid.js
Ext.define('QuotaKPI.view.accounting.QuotaGrid', {
extend: 'Ext.grid.Panel'
,xtype: 'QuotaGrid'
,store: Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota')
,columns: [
...
]
,dockedItems : [
,{xtype: 'pagingtoolbar',
dock:'bottom',
store: Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota'),
displayInfo: true,
displayMsg: 'Displaying Quota Details {0} - {1} of {2}',
emptyMsg: "No Quota to display"
}
]
,initComponent: function() {
this.callParent(arguments);
}
});
控制器中声明的商店、模型和网格
Ext.define('QuotaKPI.controller.accounting.AccountingController', {
extend: 'Ext.app.Controller',
stores: ['accounting.Quota'],
models: ['accounting.QuotaModel'],
views: ['accounting.QuotaGrid']
...
控制器本身列在 app.js
Ext.application({
name: 'QuotaKPI',
controllers: [
'accounting.AccountingController'
],
init: function(app){
},
autoCreateViewport: true
});
有什么帮助吗?
我知道 storeId 不接受某些字符(例如“-”),我不知道点...无论如何我建议这样做简单的。
尝试 "myStoreId"
另外你可以试试:
Ext.define('QuotaKPI.view.accounting.QuotaGrid', {
extend: 'Ext.grid.Panel'
,xtype: 'QuotaGrid'
,store: "myStoreId",
,columns: [
...
]
,dockedItems : [
,{xtype: 'pagingtoolbar',
dock:'bottom',
store: "myStoreId",
displayInfo: true,
displayMsg: 'Displaying Quota Details {0} - {1} of {2}',
emptyMsg: "No Quota to display"
}
]
,initComponent: function() {
this.callParent(arguments);
}
});
此外,我建议您确保具有正确的架构配置(请参阅 http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.schema.Schema)
然后,您也可以尝试使用 ViewModel 而不是 storeId(参见 http://docs.sencha.com/extjs/5.0/application_architecture/view_models_data_binding.html)
不要犹豫,做一个https://fiddle.sencha.com/#home
祝你好运!
转型并不容易...
我正在尝试将现有应用程序从 ExtJs 4.2.1 移植到 6.0.1 在调试器中我看到网格有 'ext-empty-store' 存储而不是 'store.accounting.Quota' 的问题 我可以通过执行直接在面板激活侦听器中加载商店 var store = Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota'); store.load(); 在 firebug 中,我看到了请求和完美的 json 响应,但网格中没有任何内容
这里是代码片段
app/store/accounting/Quota.js
Ext.define('QuotaKPI.store.accounting.Quota', {
extend: 'Ext.data.JsonStore',
model: 'QuotaKPI.model.accounting.QuotaModel',
alias: 'store.accounting.Quota',
storeId: 'QuotaKPI.store.accounting.Quota',
autoLoad: false,
proxy: {
...
}
});
app/view/accounting/QuotaGrid.js
Ext.define('QuotaKPI.view.accounting.QuotaGrid', {
extend: 'Ext.grid.Panel'
,xtype: 'QuotaGrid'
,store: Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota')
,columns: [
...
]
,dockedItems : [
,{xtype: 'pagingtoolbar',
dock:'bottom',
store: Ext.data.StoreManager.lookup('QuotaKPI.store.accounting.Quota'),
displayInfo: true,
displayMsg: 'Displaying Quota Details {0} - {1} of {2}',
emptyMsg: "No Quota to display"
}
]
,initComponent: function() {
this.callParent(arguments);
}
});
控制器中声明的商店、模型和网格
Ext.define('QuotaKPI.controller.accounting.AccountingController', {
extend: 'Ext.app.Controller',
stores: ['accounting.Quota'],
models: ['accounting.QuotaModel'],
views: ['accounting.QuotaGrid']
...
控制器本身列在 app.js
Ext.application({
name: 'QuotaKPI',
controllers: [
'accounting.AccountingController'
],
init: function(app){
},
autoCreateViewport: true
});
有什么帮助吗?
我知道 storeId 不接受某些字符(例如“-”),我不知道点...无论如何我建议这样做简单的。 尝试 "myStoreId"
另外你可以试试:
Ext.define('QuotaKPI.view.accounting.QuotaGrid', {
extend: 'Ext.grid.Panel'
,xtype: 'QuotaGrid'
,store: "myStoreId",
,columns: [
...
]
,dockedItems : [
,{xtype: 'pagingtoolbar',
dock:'bottom',
store: "myStoreId",
displayInfo: true,
displayMsg: 'Displaying Quota Details {0} - {1} of {2}',
emptyMsg: "No Quota to display"
}
]
,initComponent: function() {
this.callParent(arguments);
}
});
此外,我建议您确保具有正确的架构配置(请参阅 http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.schema.Schema)
然后,您也可以尝试使用 ViewModel 而不是 storeId(参见 http://docs.sencha.com/extjs/5.0/application_architecture/view_models_data_binding.html)
不要犹豫,做一个https://fiddle.sencha.com/#home
祝你好运! 转型并不容易...