0

5 つのビュー モデルのそれぞれに、rowNumber プロパティがあります。また、rowNumber プロパティに基づいて計算されたオブザーバブルもあります。コードは次のとおりです。

function EntityViewModel() {
    this.rowNumber = ko.observable();

    this.isOdd = ko.computed(function () {
        return this.rowNumber() % 2 != 0;
    }, this);

    this.isEven = ko.computed(function () {
        return this.rowNumber() % 2 == 0;
    }, this);
}

次のように EntityViewModel から継承する CountryViewModel があります。

CountryViewModel.prototype = new EntityViewModel();

function CountryViewModel() {
    this.id = ko.observable();
    this.name = ko.observable();
    this.abbrev = ko.observable();
}

質問: 次のように CountryViewModel オブジェクトから rowNumber を設定できますか:

var cvm = new CountryViewModel();
cvm.rowNumber(index);

私の場合、計算されたオブザーバブル isOdd / isEven が正しく計算されていません。CountryViewModel で rowNumbers を設定していますが、rowNumbers は 0 のようです。計算されたオブザーバブル関数に問題はありますか?特にコンテキストがこれに設定されていますか?

4

1 に答える 1

1

プロトタイプを使用する代わりに、次のようなことができます。

function EntityViewModel() {
    // ...
}
function CountryViewModel() {
    EntityViewModel.apply(this);
}

例としてjsfiddleを更新しました: http://jsfiddle.net/Ht8GR/4/

于 2013-04-25T17:19:59.457 に答える