Как правильно определить window.unload в sproutcore? - PullRequest
2 голосов
/ 28 июня 2010

Я хочу убедиться, что данные сохранены в моем приложении sproutcore, прежде чем пользователь уйдет со страницы.Каков наилучший способ сделать это в Sproutcore?

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

Нет определенного способа одобрения 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.';
  }
}

Я знаю, что пора, но янадеюсь, что это поможет вам или кому-то еще.

Если у вас есть дополнительные вопросы, посетите чат-комнату IRC по адресу #sproutcore или ознакомьтесь со списком рассылки sproutcore@googlegroups.com.

.
1 голос
/ 04 июля 2010

Я предполагаю, что под данными вы подразумеваете записи. В этом случае вы можете установить свойство 'commitRecordsAutomatics' в MyApp.store равным True.

Или, если вы можете обнаружить, что пользователь покидает вашу страницу, вы можете вызвать MyApp.store.commitRecords ().

...