如何在knockout js中扩展现有的视图模型

时间:2014-01-24 02:19:09

标签: knockout.js

例如,我在global.js中创建了一个主视图模型,其中包含了所有页面中使用的一些功能。然后,在pageA中,我想扩展主视图模型。但是我已经在global.js中调用了ko.applybindings(masterViewModel)。我无法在pageA.js中更改主视图模型,然后重新应用它,因为它会导致错误。
我该怎么办;什么是扩展现有视图模型的正确方法?

1 个答案:

答案 0 :(得分:3)

一种方法是继承。因此,您将拥有基本(主)视图模型,然后创建一个继承基本视图模型的新视图模型(根据需要为每个页面)。这是一个如何做到这一点的例子(使用fiddle)。

var baseModel = function () {
    var self = this;
    self.preference = ko.observable();
}

function pageAviewModel() {
    var self = this;
    // inherit from baseModel
    baseModel.call(self);

    self.setPreference = function () {
        // you can now utilize observables from your base model
        self.preference("Pizza");
    }
};

ko.applyBindings(new pageAviewModel());