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

Knockout.js 如何在knockout js中扩展现有视图模型,knockout.js,Knockout.js,例如,我在global.js中创建了一个主视图模型,其中包含一些在所有页面中使用的功能。然后,在pageA中,我想扩展主视图模型。但是我已经在global.js中调用了ko.applybindings(masterViewModel)。我不能在pageA.js中更改主视图模型,然后重新应用它,因为它会导致错误 我该怎么办;扩展现有视图模型的正确方法是什么?一种方法是使用继承。因此,您将拥有基本(主)视图模型,然后创建继承基本视图模型的新视图模型(根据需要为每个页面)。下面是一个示例,说明如何(使

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

我该怎么办;扩展现有视图模型的正确方法是什么?

一种方法是使用继承。因此,您将拥有基本(主)视图模型,然后创建继承基本视图模型的新视图模型(根据需要为每个页面)。下面是一个示例,说明如何(使用)完成此操作


一种方法是继承。因此,您将拥有基本(主)视图模型,然后创建继承基本视图模型的新视图模型(根据需要为每个页面)。下面是一个示例,说明如何(使用)完成此操作


您是否考虑过新对象上的继承和
ko.applybindings
?您也可以尝试以相反的方向用力拉动它,看看它是否以这种方式扩展。听起来您更需要一个带有母版页和页面的SPA框架?您是否考虑过新对象上的继承和
ko.applybindings
你也可以试着从相反的方向用力拉它,看看它是否能扩展到那个方向。听起来你更需要一个带有母版页和页面的SPA框架?
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());