我这里有这段代码
self.timestamp = ko.observable(data.timestamp);
self.dateFromNow = ko.computed(function ()
{
return moment(self.timestamp()).fromNow();
}, self);
self.timestamp
只是一个unix时间戳
self.dateFromNow
看起来像44 years ago
或1 minute ago
我的目标是self.dateFromNow
重新计算每个设定的时间间隔。
这些属性绑定到 HTML<time>
元素,但我不想通过使用 JS/jQuery 来检查元素并重新计算来进行重新计算。我认为更好的方法是简单地在每个设定的时间间隔重新计算 KnockoutJS 中的值并让 KO 更新标记。
有没有办法在 KnockoutJS 中做到这一点?
更新:我所做的是代替海报的答案
setInterval(function() {
$.each(self.foo(), function(index, item) {
item.timestamp.notifySubscribers();
});
}, 60 * 1000); // 60 * 1000 milsec