我希望确保在用户导航离开页面之前将数据保存在我的sproutcore应用程序中。在Sproutcore中执行此操作的最佳方法是什么?
答案 0 :(得分:3)
Sproutcore没有特别批准的方式。但是我做了一件看起来像这样的事情:
在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;
}
});
然后在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.';
}
}
我知道这已经过期了,但我希望这可以帮助你或其他人。
如果您还有其他问题,请访问#sproutcore的IRC聊天室或查看sproutcore@googlegroups.com上的邮件列表。
答案 1 :(得分:1)
我假设数据是指记录。在这种情况下,您可以将MyApp.store的'commitRecordsAutomatically'属性设置为True。
或者,如果您可以检测到离开您网页的用户,则可以调用MyApp.store.commitRecords()。