Tengo un almacén de datos personalizado que almacena la información si la tienda se ha cargado una vez o no.ExtJS Escucha de carga de la tienda no se invoca
/**
* Custom DataStore which stores the information whether data has been loaded once or not.
*/
Ext.example.Store = Ext.extend(Ext.data.Store, {
loaded: false,
initComponent: function() {
this.superclass().initComponent.call(this);
this.addEvents('load','beforeload');
},
isLoaded : function() {
return this.loaded;
},
listeners: {
'load' : function(store,records,options) {
this.loaded = true;
}
}
});
Esto funcionaba bien hasta hace poco. Agregué un detector de eventos 'beforeload' a una instancia de esta tienda. El oyente de 'carga' no se invoca ahora.
var accountsDataStore = new Ext.example.Store({
id : 'account',
proxy : new Ext.data.HttpProxy({
url : 'app/account/fetch/all',
method : 'post',
api : {
destroy : 'app/account/delete'
}
}),
reader : accountReader,
writer : accountWriter,
remoteSort : true,
sortInfo : {
field : 'createdOn',
direction : "DESC"
},
listeners: {
beforeload: function(store, options) {
var sort = options.params.sort;
// setting the sort parameters to match the property names in the DTO
switch(sort) {
case 'company' :
options.params.sort = 'company.name';
break;
default:
// do nothing
}
}
}
});
¿Qué podría estar haciendo mal aquí? También déjenme saber sus sugerencias para mejorar
Dónde estás cargando la tienda? No puedo ver ninguna opción autoLoad: true o accountsDataStore.load(). – Swar
Intento cargar la tienda haciendo clic en una pestaña. Mi intención no es cargar la tienda si la tienda se ha cargado previamente: \t 'if (! AccountsDataStore.isLoaded()) { accountsDataStore.load(); } '. El 'isLoaded' siempre devuelve falso, ya que el oyente de carga nunca se invoca. – Joji
Hola, estoy enfrentando el mismo problema. ¿Puedes decirme cómo resolviste este problema? – Shekhar