我有一个循环,用于更改在计算变量中使用的Knockout可观察变量。我有一个绑定到该计算变量的跨度。当我运行它时,该跨度的UI不会改变。整数值正在发布到控制台,因此我知道正在处理计算变量。
这是我的JS:
var PlayerViewModel = function () {
var self = this;
self.NumberOfLoops = ko.observable(0);
self.StartLoopTime = ko.observable(new Date());
self.LoopsPerMinute = ko.computed(function () {
var a = self.NumberOfLoops();
var b = new Date() - self.StartLoopTime();
var c = a / ((b) / 60000);
var d = Math.round(c);
console.log(d);
return d;
});
self.Loop = function () {
//..Stuff..
var count = self.NumberOfLoops();
count = count + 1;
self.NumberOfLoops(count);
//..More Stuff..
//Call self.Loop again
};
}
HTML:
<span data-bind="text: LoopsPerMinute">0</span>
我还有其他DOM元素绑定到其他可观察对象并在'PlayerViewModel'中计算,并且这些元素正在运行。在循环运行时,不应该跨越文本自动更改。目前不是。
任何帮助表示赞赏!谢谢!
答案 0 :(得分:0)
你可以做到
self.Loop = function () {
//..Stuff..
var count = self.NumberOfLoops();
count = count + 1;
self.NumberOfLoops(count);
//..More Stuff..
setTimeout(function()
{
self.Loop();
}, 0)
};
在这种情况下,每次更改self.NumberOfLoops
时,视图都会更新。