2013-12-21 2 views
6

Есть ли способ, чтобы вычислимое свойство наблюдало текущее время (для использования в метке времени)?Расчетное свойство Ember, которое наблюдает текущее время

К примеру, в моем контроллере я мог бы иметь метод, который выглядел примерно так:

formatLastUpdated:function() { 
    return moment(this.get("model.update_ts")).fromNow(); 
}.property("model.update_ts", "date.now?"), 
+0

Что вы пытаетесь достигать? Вы не хотите наблюдать за временем, так как оно постоянно меняется. Если бы это было возможно, ваш javascript застрял бы в непрерывном цикле только обновления этого свойства и никогда не имел бы достаточно времени (ни каламбур), чтобы делать что-либо еще. Я думаю, если вы объясните, каков желаемый результат, будет лучший способ. – Scott

+0

Да, я просто ищу свою обновленную временную метку, которая является относительной (используя moment.js), чтобы оставаться актуальной. Я постараюсь ответить – Ben

ответ

7

ember-time хранилище содержит хороший пример того, что вы пытаетесь сделать.

Они используют пользовательский вид через помощник руля. Вид устанавливает tick функцию, которая вызывается каждым второй через Ember.run.later:

didInsertElement: function() { 
    this.tick(); 
}, 
tick: function() { 
    var nextTick = Ember.run.later(this, function() { 
    this.notifyPropertyChange('value'); 
    this.tick(); 
    }, 1000); 
    this.set('nextTick', nextTick); 
}, 
willDestroyElement: function() { 
    var nextTick = this.get('nextTick'); 
    Ember.run.cancel(nextTick); 
} 

notifyPropertyChange вызова говорит мнение, что свойство изменилось, и поэтому вызывает повторную визуализацию ...

1

Принимает Скотт полностью. При этом вы можете создать глобальное свойство, которое вы обновляете один раз в минуту с последним временем, чтобы вы работали с подмножеством времени.

Я бы сохранил его на контроллере приложений, а затем воспользовался потребностями других контроллеров. Вот пример.

http://emberjs.jsbin.com/Elibefem/1/edit

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