У меня есть служба часы -clock.jsEmber- 1,13 служба не инициализируется в компоненте
import Ember from 'ember';
var ONE_SECOND = 2000;
export default Ember.Object.extend({
time : null,
second : null,
tick: function() {
var clock = this;
Ember.run.later(function() {
var now = new moment();
clock.setProperties({
time : now,
second : now.seconds()
});
}, ONE_SECOND);
}.observes('second').on('init')
})
который я инициализировать, как
export function initialize(container, application) {
container.optionsForType('service:clock', { singleton: true });
application.inject('route', 'clockService', 'service:clock');
application.inject('controller', 'clockService', 'service:clock');
application.inject('component', 'clockService', 'service:clock');
}
export default {
name: 'clock-service',
initialize: initialize
};
Я использую часы тикер вычислить истекшее время (я используя moment.js).
timeElapsed : function(){
var clock = this.get('clockService').get('time');
var createdTime = new moment(this.get('request.createdAt'));
var duration = moment.duration(clock.diff(createdTime));
if(duration._data.hours > 0) return duration._data.hours+" hrs";
if(duration._data.minutes > 0) return duration._data.minutes+" mins";
if(duration._data.seconds > 0) return duration._data.seconds+" secs";
return duration._data.seconds;
}.property('request.createdAt','clockService.second')
Теперь проблема заключается в том, что услуга вводится в компоненты, но свойства не заданы.
Ваш код работает в общем: http://emberjs.jsbin.com/moviji/edit?js,console К слову, 'time' переменной при вычислении TimeElapsed может быть пустым при первом вызове. – Microfed
Для каждой секунды есть функция наблюдателя, которую нужно пересчитать? Это звучит так неправильно. XD «ONE-SECOND: 2000»: D –
Я изменил его на две тысячи, потому что я думал, что может произойти гоночное состояние, а затем я забыл изменить переменную. – shivendra