0

我的 5 个视图模型中的每一个都有一个 rowNumber 属性。此外,还有一个基于 rowNumber 属性的计算 observable。这是代码:

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);

在我的情况下,计算的 observable isOdd / isEven 没有得到正确计算。尽管我通过 CountryViewModel 设置 rowNumbers,但似乎 rowNumber 为 0。计算出的可观察函数是否有任何问题——尤其是设置为此的上下文?

4

1 回答 1

1

除了使用原型,您还可以执行以下操作:

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

我已经更新了您的 jsfiddle 作为示例:http: //jsfiddle.net/Ht8GR/4/

于 2013-04-25T17:19:59.457 回答