Je veux m'assurer que les données sont sauvegardées dans mon application sproutcore avant qu'un utilisateur ne quitte la page. Quelle est la meilleure façon de faire cela dans Sproutcore?Quelle est la bonne façon de détecter window.unload dans sproutcore
2
A
Répondre
1
Je suppose que par données, vous voulez dire des enregistrements. Dans ce cas, vous pouvez définir la propriété 'commitRecordsAutomatically' de MyApp.store sur True. Ou si vous pouvez détecter que l'utilisateur quitte votre page, vous pouvez alors appeler MyApp.store.commitRecords().
3
Il n'y a pas de manière spécifique approuvée par Sproutcore. Cependant, je l'ai fait quelque chose qui ressemble à peu près comme ceci:
Dans core.js
MyApp = SC.Object.create({
// ...
storeIsDirty: function(){
var statuses = this.store.statuses, storeKey;
for(storeKey in statuses){
if (statuses[storeKey] & SC.Record.DIRTY) return YES;
}
return NO;
},
storeIsBusy: function(){
var statuses = this.store.statuses, storeKey;
for(storeKey in statuses){
if (statuses[storeKey] & SC.Record.BUSY) return YES;
}
return NO;
}
});
Puis, en main.js
window.onbeforeunload = function(){
var dirty = MyApp.storeIsDirty(),
busy = MyApp.storeIsBusy();
if (dirty || busy) {
// User will be prompted with the return value
return 'You have unsaved changes and will lose them if you continue.';
}
}
Je sais que ce retard, mais j'espère que vous aide ou quelqu'un autre.
Si vous avez d'autres questions, visitez le salon de discussion IRC à l'adresse #sproutcore ou consultez la liste de diffusion à l'adresse [email protected]