Knockout + Moment.js - 更新observable中的相对日期

Nor*_*ert 3 javascript knockout.js momentjs

在我完成的任务列表中,我使用Moment.js fromNow()列出每个任务的相对完成日期.这是任务模型:

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());
};
Run Code Online (Sandbox Code Playgroud)

相对日期显示,但分钟永远不会更新,除非我刷新.有没有办法更新那个可观察的?

Dou*_*las 8

你可以有一个跟踪当前时间的observable,然后根据那个时间计算完成的文本:

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

var completedText = ko.computed(function()
    moment(data.date_completed).from(now()));
});
Run Code Online (Sandbox Code Playgroud)