2013-08-31 1 views
3

В моем списке завершенных задач я использовал Moment.js's fromNow(), чтобы указать относительную дату завершения для каждой задачи. Вот модель задачи:Нокаут + Moment.js - Обновить относительные даты внутри наблюдаемого

Task.Model = function(data) { 
    this.id = data.id; 
    this.title = ko.observable(data.title); 
    this.status = ko.observable(data.status); 
    this.completed = ko.observable(moment(data.date_completed).fromNow()); 
}; 

Относительная дата появляется, но минуты не обновляются, если только я не обновляюсь. Есть ли способ обновить это наблюдаемое?

+0

Что вы имеете в виду на «никогда не обновлять, если я не обновить»? Кто и почему должен его обновлять? Как вы «обновляете» браузер с помощью F5? – nemesv

ответ

8

Вы могли бы наблюдаемым, который отслеживает текущее время, а затем вычислить завершенный текст на основе этого времени:

var now = ko.observable(new Date()); 
setInterval(function() { now(new Date()); }, 60 * 1000); 

var completedText = ko.computed(function() 
    moment(data.date_completed).from(now())); 
});