在KnockoutJS中每x秒重新评估一个计算函数

时间:2013-06-08 08:34:35

标签: knockout.js

我可以每隔1000毫秒执行一次计算函数来获取我的UI中显示的每1000毫秒新的时间跨度值吗?

self.timespan = ko.computed(function() {
        return self.orderTime() + " " + new Date();
});

1 个答案:

答案 0 :(得分:1)

new Date()包裹在一个可观察的计时器中,并使用setInterval每1000毫秒更新一次,例如:

function myViewModel() {
    var self = this;

    self.orderTime = ko.observable(new Date(2013,1,1,12,0,0));
    self.timer = ko.observable(new Date());

    self.timespan = ko.computed(function() {
        return self.orderTime() + " " + self.timer();
    });    

    window.setInterval(function() { self.timer(new Date()); }, 1000);
}

ko.applyBindings(new myViewModel());

如果您愿意,也可以始终将timer可观察对象隐藏在ViewModel的范围内,具体取决于您是否要直接公开它。

请参阅this fiddle了解演示。