2015-05-15 3 views
0

Мне нужно обновить данные ViewModel изнутри функции обратного вызова setTimeout, но это не сработает. Похоже, я столкнулся с проблемой, подобной тому, что происходит, когда мне нужно обновить значение данных в Угловом внешнем угловом, а затем нужно позвонить $scope.apply(), но в режиме ExtJS.Установить значение данных ViewModel из внутреннего таймаута не обновляет вид

Вот код:

Ext.define('Web.view.taskbar.clock.ClockController', { 
    extend: 'Ext.app.ViewController', 

    alias: 'controller.taskbar-clock', 

    init: function() { 
     var me = this; 

     // this works 
     var time = new Date(); 
     me.getViewModel().data.time = time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds(); 

     // this doesn't work 
     var timer = function() { 
      setTimeout(function() { 
       var time = new Date(); 
       me.getViewModel().data.time = time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds(); 
       timer(); 
      }, 1000); 
     }; 
     timer(); 
    } 
}); 

Edit: Обновленный рабочий код

Ext.define('Web.view.taskbar.clock.ClockController', { 
    extend: 'Ext.app.ViewController', 

    alias: 'controller.taskbar-clock', 

    init: function() { 
     var vm = this.getViewModel(); 

     var timer = function() { 
      setTimeout(function() { 
       var time = new Date(); 
       vm.set('time', time.getHours() + ':' + time.getMinutes() + ':' + time.getSeconds()); 
       timer(); 
      }, 1000); 
     } 
     timer(); 
    } 
}); 
+0

Я забыл упомянуть: ExtJS 5,1 –

ответ

3

Вы должны вызвать метод установки: link.

vm.set('time', 'x');

+0

Он работает, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^