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