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

时间:2013-08-31 20:16:23

标签: 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());
};

相对日期显示,但分钟永远不会更新,除非我刷新。有没有办法更新那个observable?

1 个答案:

答案 0 :(得分: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()));
});