2015-05-02 4 views
0

Я пытаюсь сохранить некоторые настройки в localStorage с использованием пользовательского интерфейса Kendo. Я мою установку кода, как это:Использование локального хранилища с пользовательским интерфейсом Kendo

settings: { 
     getSettings: function() { 
      console.log("reading settings"); 
      console.log("localStorage.getItem('chkEnergy') = " + localStorage.getItem('chkEnergy')); 
      console.log("this.get('chkEnergy) = " + this.get('chkEnergy')); 
      this.set('chkEnergy', localStorage.getItem('chkEnergy')); 
      this.set('chkSleep', localStorage.getItem('chkSleep')); 
      this.set('chkActivity', localStorage.getItem('chkActivity')); 
      this.set('notifications', localStorage.getItem('notifications')); 
      this.set('notification_interval', localStorage.getItem('notification_interval')); 
     }, 
     saveSettings: function() { 
      console.log("writing settings"); 
      console.log("this.get('chkEnergy) = " + this.get('chkEnergy')); 
      localStorage.setItem('chkEnergy', this.get('chkEnergy')); 
      localStorage.setItem('chkSleep', this.get('chkSleep')); 
      localStorage.setItem('chkActivity', this.get('chkActivity')); 
      localStorage.setItem('notifications', this.get('notifications')); 
      localStorage.setItem('notification_interval', this.get('notification_interval')); 

     }, 
     chkEnergy: localStorage.getItem('chkEnergy'), 
     chkSleep: localStorage.getItem('chkSleep'), 
     chkActivity: localStorage.getItem('chkActivity'), 
     notifications: false, 
     notification_interval: 1, 
     intervals: [{ 
       'IntName': '1. time', 
       'value': '1' 
      }, 
      { 
       'IntName': '2. timer', 
       'value': '2' 
      }, 
      { 
       'IntName': '3. timer', 
       'value': '3' 
      }, 
      { 
       'IntName': '4. timer', 
       'value': '4' 
      }]} 

и на мой взгляд:

<div data-role="view" data-layout="main" data-model="APP.models.settings" > 
    <div data-role="notification" id="ntf"></div> 
    <ul data-role="listview" data-style="inset" data-type="group"> 
     <li>Indstillinger 
      <ul> 
       <li>Påmindelser 
        <input data-role="switch" id="switchNotification" data-on-label="til" data-off-label="fra" data-bind="checked: notifications, events: { change: setNotifications }" /> 
       </li> 
       <li>Interval 
        <input data-role="dropdownlist" id="notificationgap" data-theme="silver" data-text-field="IntName" data-value-field="value" data-bind="value: notification_interval, 
          source: intervals, 
          events: { 
          change: setNotifications 
          }, 
          enabled: notifications" style="width:5em"> 
       </li> 
      </ul> 
     </li> 
     <li>Spørgsmål 
      <ul> 
       <li>Træthed 
        <input data-role="switch" data-on-label="til" data-off-label="fra" data-bind="checked: chkEnergy, events: { change: saveSettings }" /> 
       </li> 
       <li>Søvn 
        <input data-role="switch" data-on-label="til" data-off-label="fra" data-bind="checked: chkSleep, events: { change: saveSettings }" /> 
       </li> 
       <li>Aktivitet 
        <input data-role="switch" data-on-label="til" data-off-label="fra" data-bind="checked: chkActivity, events: { change: saveSettings }" /> 
       </li> 
       <li> 
       <a data-role="button" data-bind="events: { click: getSettings }">Click me</a></li> 

      </ul> 
     </li> 
    </ul> 
</div> 

, но по какой-то причине this.get ('chkEnergy') является отсроченное значение. Это ios, как будто значение не изменяется до тех пор, пока событие «изменения» не завершится. Зачем?

ответ

0

Solution является для прослушивания изменения в кендо наблюдаемым как так:

window.APP.models.settings.bind("change",window.APP.models.settings.saveSettings); 
Смежные вопросы