Utilisez le store.isLoading()
méthode, je pense que c'est à cela qu'elle sert. Je l'utilise et ça marche bien.
-
Configurez les magasins que vous voulez charger avant d'exécuter une logique avec un storeId
config.
-
Mettez ces storeIds
dans un tableau.
-
Chaque fois qu'un de ces magasins est chargé, il faut itérer dans le tableau, rechercher le magasin à l'aide de la commande Ext.getStore
et appeler isLoading
sur elle.
-
Si aucun des magasins du tableau n'est encore en cours de chargement, exécutez votre logique.
Par exemple, disons que je veux store1
y store2
chargé avant d'exécuter une certaine logique (je montre ceci dans le modèle non-MVC parce qu'il semble que vous n'utilisez pas le modèle MVC d'après votre extrait).
var store1 = Ext.create('Ext.data.Store', {
model: myModel,
storeId: 'store1', // store needs to be done MVC style or have this config
proxy: {
type: 'ajax',
url: 'url...',
reader: 'json'
},
autoLoad: {
callback: initData // do this function when it loads
}
});
var store2 = Ext.create('Ext.data.Store', {
model: myModel,
storeId: 'store2',
proxy: {
type: 'ajax',
url: 'url...',
reader: 'json'
},
autoLoad: {
callback: initData // do this function when it loads
}
});
// the stores to be checked
var myComboStores = ['store1', 'store2']
// function does logic if they are both finished loading
function initData() {
var loaded = true;
Ext.each(myComboStores, function(storeId) {
var store = Ext.getStore(storeId);
if (store.isLoading()) {
loaded = false;
}
});
if(loaded) {
// do stuff with the data
}
}