如何在没有用户生成的事件的情况下显示和更新时间?这是我的开始,但我无法弄清楚如何让视图刷新。
function viewModel() {
this.clock = ko.computed(function() { return new Date().getTime(); }, this).extend({ throttle: 1000 });
};
ko.applyBindings(new viewModel());
使用以下HTML:
<span data-bind="text: clock"></span>
这是jsfiddle。
答案 0 :(得分:22)
这似乎可以解决问题:
function viewModel() {
var self = this;
this.clock = ko.observable(new Date());
this.tick = function() {
self.clock(new Date());
};
setInterval(self.tick, 3000);
};
ko.applyBindings(new viewModel());
与此HTML结合使用时:
<span data-bind="text: clock"></span>
答案 1 :(得分:1)
ko.now = function(interval) {
var now = ko.observable();
var time = new Date().getTime()
setTimeout(function() {
setInterval(function() {
now(new Date());
}, interval);
now(new Date());
}, interval - time % interval);
now(new Date(time - time % interval));
return now;
}
ko.applyBindings({ now: ko.now(5*1000) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div id="clock" data-bind="text: now"></div>