gpt4 book ai didi

javascript - KnockoutJS - 以设定的时间间隔重新计算计算值

转载 作者:行者123 更新时间:2023-11-29 18:20:46 25 4
gpt4 key购买 nike

我这里有这段代码

self.timestamp = ko.observable(data.timestamp);
self.dateFromNow = ko.computed(function ()
{
return moment(self.timestamp()).fromNow();
}, self);

self.timestamp只是一个 unix 时间戳

self.dateFromNow看起来像 44 years ago1 minute ago

我的目标是 self.dateFromNow重新计算每个设定的时间间隔。

这些属性绑定(bind)到 HTML <time>元素,但我不想通过使用 JS/jQuery 遍历元素并重新计算来进行重新计算。我认为更好的方法是在每个设置的时间间隔简单地重新计算 KnockoutJS 中的值,然后让 KO 更新标记。

有没有办法在 KnockoutJS 中做到这一点?

更新:我所做的就是这样代替张贴者的回答

setInterval(function() {
$.each(self.foo(), function(index, item) {
item.timestamp.notifySubscribers();
});
}, 60 * 1000); // 60 * 1000 milsec

最佳答案

处理此问题的另一种方法是,每当另一个可观察值更改值时重新评估计算值,该值按时间间隔更改。听起来很疯狂?

var fireEvaluations = ko.observable(0);

// Somewhere after the DOM is ready
setInterval(function () {
fireEvaluations(fireEvaluations() + 1);
}, 6000);

var someOtherObservable = ko.computed(function () {
// Subscribe to the triggering observable
if (fireEvaluations()) { }
// Do your real code
});

现在所有具有类似 if (fireEvaluations()) { } 的计算将在该值更改后重新评估。

关于javascript - KnockoutJS - 以设定的时间间隔重新计算计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com