Javascript ExtJS:一次加载所有存储
My application.js文件的定义如下所示。如您所见,有许多存储和视图要加载 问题是,它们是异步加载的。因此,如果用户在加载存储之前单击一个按钮,它将无法工作 如果我等到所有存储都加载完毕,它将按预期工作 如何仅在需要时加载存储;或者,有什么更好的办法来解决这个问题Javascript ExtJS:一次加载所有存储,javascript,ajax,extjs,Javascript,Ajax,Extjs,My application.js文件的定义如下所示。如您所见,有许多存储和视图要加载 问题是,它们是异步加载的。因此,如果用户在加载存储之前单击一个按钮,它将无法工作 如果我等到所有存储都加载完毕,它将按预期工作 如何仅在需要时加载存储;或者,有什么更好的办法来解决这个问题 Ext.define('RateManagement.Application', { name: 'RateManagement', extend: 'Ext.app.Application',
Ext.define('RateManagement.Application', {
name: 'RateManagement',
extend: 'Ext.app.Application',
views: [
// TODO: add views here
'RateManagement.view.Grids.CountryRateGrid',
'RateManagement.view.Grids.LocationRateGrid',
'RateManagement.view.ComboBox.CountryCombo',
'RateManagement.view.ComboBox.CurrencyCombo',
'RateManagement.view.ComboBox.LocationCombo',
'RateManagement.view.ComboBox.RateTypeCombo',
'RateManagement.view.Columns.CurrencyColumn',
'RateManagement.view.Columns.RateTypeColumn',
'RateManagement.view.Columns.LocationColumn',
'RateManagement.view.Columns.RateTypeColumn',
'RateManagement.view.Columns.CountryColumn',
'RateManagement.view.ServiceSelect.ServiceSelect',
'RateManagement.view.Grids.AirShipmentGrid',
'RateManagement.view.Grids.LocationWithYearOtherRateGrid',
'RateManagement.view.Grids.CountryWithYearOtherRateGrid',
'RateManagement.view.Grids.RealtorFeeRateGrid',
'RateManagement.view.Grids.AirfareRateGrid'
],
controllers: [
// TODO: add controllers here
],
stores: [
// TODO: add stores here
'RateManagement.store.CountryStore',
'RateManagement.store.CurrencyStore',
'RateManagement.store.LocationStore',
'RateManagement.store.RateTypeStore',
'RateManagement.store.LegalRateStore',
'RateManagement.store.DeparturePackageRateStore',
'RateManagement.store.HouseSearchStore',
'RateManagement.store.LanguageTrainingStore',
'RateManagement.store.TempLiving1BedroomStore',
'RateManagement.store.TempLiving2BedroomStore',
'RateManagement.store.TempLiving3BedroomStore',
'RateManagement.store.TransportationLuxury',
'RateManagement.store.TransportationMidSize',
'RateManagement.store.LanguageTrainingStore',
'RateManagement.store.AirShipmentStore',
'RateManagement.store.ServiceStore',
'RateManagement.store.HomeSearchTripLodgingStore',
'RateManagement.store.HomeSearchTripCarRentalStore',
'RateManagement.store.HomeSearchTripMealsStore',
'RateManagement.store.SchoolSearchStore',
'RateManagement.store.RealtorFeeStore',
'RateManagement.store.AirfareStore'
],
models: [
'RateManagement.model.Country',
'RateManagement.model.Currency',
'RateManagement.model.Location',
'RateManagement.model.CountryRate',
'RateManagement.model.LocationRate',
'RateManagement.model.CountryRate',
'RateManagement.model.Service',
'RateManagement.model.AirShipmentModel',
'RateManagement.model.RealtorFeeModel',
'RateManagement.model.AirfareRate'
],
launch: function() {
//app launch code
//stupid fix for stupid bug
Ext.override(Ext.grid.RowEditor,{
addFieldsForColumn: function(column, initial) {
var me = this,
i,
length, field;
if (Ext.isArray(column)) {
for (i = 0, length = column.length; i < length; i++) {
me.addFieldsForColumn(column[i], initial);
}
return;
}
if (column.getEditor) {
field = column.getEditor(null, {
xtype: 'displayfield',
getModelData: function() {
return null;
}
});
if (column.align === 'right') {
field.fieldStyle = 'text-align:right';
}
if (column.xtype === 'actioncolumn') {
field.fieldCls += ' ' + Ext.baseCSSPrefix + 'form-action-col-field';
}
if (me.isVisible() && me.context) {
if (field.is('displayfield')) {
me.renderColumnData(field, me.context.record, column);
} else {
field.suspendEvents();
field.setValue(me.context.record.get(column.dataIndex));
field.resumeEvents();
}
}
if (column.hidden) {
me.onColumnHide(column);
} else if (column.rendered && !initial) {
me.onColumnShow(column);
}
// -- start edit
me.mon(field, 'change', me.onFieldChange, me);
// -- end edit
}
}
});
}
});
Ext.define('RateManagement.Application'{
名称:'费率管理',
扩展:“Ext.app.Application”,
观点:[
//TODO:在此处添加视图
'RateManagement.view.Grids.CountryRateGrid',
'RateManagement.view.Grids.LocationRateGrid',
'RateManagement.view.ComboBox.CountryCombo',
'RateManagement.view.ComboBox.CurrencyCombo',
'RateManagement.view.ComboBox.LocationCombo',
'RateManagement.view.ComboBox.RateTypeCombo',
'RateManagement.view.Columns.CurrencyColumn',
“RateManagement.view.Columns.RateTypeColumn”,
'RateManagement.view.Columns.LocationColumn',
“RateManagement.view.Columns.RateTypeColumn”,
'RateManagement.view.Columns.CountryColumn',
'RateManagement.view.ServiceSelect.ServiceSelect',
“RateManagement.view.Grids.AirShipmentGrid”,
'RateManagement.view.Grids.LocationWithYearOtherRateGrid',
“RateManagement.view.Grids.CountryWithYearOtherRateGrid”,
“RateManagement.view.Grids.RealtorFeeRateGrid”,
'费率管理.视图.网格.机票费率网格'
],
控制器:[
//TODO:在此处添加控制器
],
商店:[
//TODO:在此处添加门店
“RateManagement.store.CountryStore”,
“RateManagement.store.CurrencyStore”,
“RateManagement.store.LocationStore”,
'RateManagement.store.RateTypeStore',
“RateManagement.store.LegalRateStore”,
“RateManagement.store.DeparturePackageRateStore”,
“RateManagement.store.HouseSearchStore”,
“RateManagement.store.LanguageTrainingStore”,
“RateManagement.store.TempLiving1BedroomStore”,
“RateManagement.store.TempLiving2BedroomStore”,
“RateManagement.store.Templiving3卧室商店”,
“费率管理、商店、运输奢侈品”,
'费率管理.商店.运输中型',
“RateManagement.store.LanguageTrainingStore”,
“RateManagement.store.AirShipmentStore”,
“RateManagement.store.ServiceStore”,
“RateManagement.store.HomeSearchTripLodingStore”,
“Rate Management.store.HomeSearchTripCarRentalStore”,
“RateManagement.store.HomeSearchTripMealsStore”,
“RateManagement.store.SchoolSearchStore”,
“RateManagement.store.RealtorFeeStore”,
“费率管理、商店、机票商店”
],
型号:[
“费率管理.模式.国家”,
“RateManagement.model.Currency”,
“RateManagement.model.Location”,
“RateManagement.model.CountryRate”,
“RateManagement.model.LocationRate”,
“RateManagement.model.CountryRate”,
“费率管理.模型.服务”,
'费率管理.模型.空船模型',
“RateManagement.model.RealtorFeeModel”,
'费率管理.模型.机票费率'
],
启动:函数(){
//应用程序启动代码
//愚蠢的错误的愚蠢修复
Ext.override(Ext.grid.RowEditor{
addFieldsForColumn:函数(列,首字母){
var me=这个,
我
长度,字段;
如果(分机isArray(列)){
对于(i=0,length=column.length;i > p>您应该考虑使用控制器:
使用控制器,您可以将应用程序引导类拆分为多个小型控制器,这些控制器在需要时被调用和加载。它们可以依赖于创建控制器新实例时(例如,当用户请求打开新窗口时)将加载的模型、存储和视图。顶部有两个选项。要获得同步加载,您可以关闭自动加载
,并从加载
事件的回调调用下一个存储(以及每个后续存储)(注意:这很容易导致回调地狱)。另一个选项是在存储加载时启动一个函数,该函数统计加载的存储总数。一旦这个数字等于允许交互的总存储量,是否有一种方法可以在第一次显示网格时加载存储?我应该能够加载网格的数据,只有