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>

「PlayerViewModel」でも他のオブザーバブルと計算されたものにバインドされた他のDOM要素があり、それらは機能しています。ループの実行中にテキストが自動的に変更されるべきではありません。現在はありません。

どんな助けでも大歓迎です!ありがとう!

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 DEMO

この場合、 が変更されるたびにビューが更新さself.NumberOfLoopsれます。

于 2013-10-27T12:08:03.107 に答える