1

ベースクラスのオブザーバブルに問題があります。このフィドルをチェックして、問題を確認してください。

私がやろうとしていることを説明します。

継承するビューモデルの基本クラスがあります。この基本クラスには、監視可能なプロパティが含まれています。

継承されたクラスの複数のインスタンスを作成し、オブザーバブルに値を割り当てます。すべてのインスタンスに登録されている値は、最後の割り当ての値です。

次のコードは、私が何を意味するかを説明しています。

var vm = function () {
    var test = ko.observable();
    return {
        test: test
    }
};

var subvm = function () {

};

subvm.prototype = new vm();
subvm.prototype.constructor = subvm;
subvm.prototype.parent = vm.prototype;    

var testvm1 = new subvm();
var testvm2 = new subvm();


ko.applyBindings(testvm1, $('#div1').get(0));
ko.applyBindings(testvm2, $('#div2').get(0));

testvm1.test('Value for object 1');
testvm2.test('Value for object 2');

作成されたビューモデルは次のhtmlにバインドされています:

<div id="div1">
    <span data-bind="text: test">test1</span>
</div>
<div id="div2">
    <span data-bind="text: test">test2</span>
</div>

</ p>

私は何か間違ったことをしていますか?これはノックアウトではサポートされていません。

私はこれについてどんな助けでも感謝します。

4

1 に答える 1

0

継承モデルが間違っています。の両方のインスタンスがsubvmの同じインスタンスを共有しますtest

サブクラス化されたオブジェクトをインスタンス化するたびにスーパークラスのコンストラクターが実際に呼び出されることを保証しない限り、プロトタイプの継承では、親の「クラス」に見られるレキシカル スコープ変数の一意のインスタンスを作成できません。

于 2012-11-01T14:05:02.143 に答える