0

我有一个循环可以更改在计算变量中使用的 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”中的其他可观察对象和计算对象,并且这些元素正在工作。循环运行时,跨文本是否会自动更改。目前不是。

任何帮助表示赞赏!谢谢!

4

1 回答 1

0

你能行的

self.Loop = function () {
    //..Stuff..

    var count = self.NumberOfLoops();
    count = count + 1;
    self.NumberOfLoops(count);

    //..More Stuff..
    setTimeout(function()
    {
       self.Loop();
    }, 0)
};    

JSFiddle 演示

在这种情况下,每次self.NumberOfLoops更改时都会更新视图。

于 2013-10-27T12:08:03.107 回答