1

ページに 2 つの値があります。1 つは ko.computed プロパティ、もう 1 つは ko.observable です。どちらも同じ値を取得する必要がありますが、2 つの異なる方法で取得する必要があります (基本データは ko.mapping.fromJS を使用して読み込まれます)。

        //#1
        self.count = ko.computed(function () {
            return self.pages().length;
        });

        //#2
        self.count2 = ko.observable(0);
        ko.computed(function () {
            //looks like this is not fiering
            self.count2(self.pages().length);
        });

私の場合、#1はうまく機能しますが、#2はまったくトリガーできません。同様に、self.page.subscribe() を使用すると、望ましい結果も得られます。

そして、この問題の 2 番目の部分があります。ネストされたオブジェクトを作成すると、ネストされたオブジェクトに対してケース #1 と #2 が期待どおりに機能しますが、トップ レベル/親オブジェクトにはまだ問題が存在します。

そして、この奇妙な動作を示すサンプルを聞いてください - http://jsfiddle.net/rrgnK/2/

この問題の原因を知りたいのですが、それは私のコード/構造ですか、それとも何か他のものですか? (私がこの方法で解決しようとしている特定の問題はありません。この奇妙な動作に気づいたので、根本的に間違ったことをしている可能性があると思いました)

4

1 に答える 1

2

2 番目.computedのフィールドは何にもバインドされていないため、呼び出されることはありません。

提案された修正はありません。それは単にあなたがすべきことではないからです。最初のコード パターンは、他のプロパティから派生した変数への読み取りアクセスを取得するための想定される方法です。

于 2013-01-21T15:52:28.810 に答える