0
例如,我在global.js中創建了一個主視圖模型,其中包含一些在所有頁面中使用的功能。然後,在pageA中,我想擴展主視圖模型。但我已在global.js中調用ko.applybindings(masterViewModel)
。我無法在pageA.js中更改主視圖模型,然後重新應用它,因爲它會導致錯誤。
我該做什麼;什麼是擴展現有視圖模型的正確方法?如何在淘汰賽中擴展現有視圖模型js
例如,我在global.js中創建了一個主視圖模型,其中包含一些在所有頁面中使用的功能。然後,在pageA中,我想擴展主視圖模型。但我已在global.js中調用ko.applybindings(masterViewModel)
。我無法在pageA.js中更改主視圖模型,然後重新應用它,因爲它會導致錯誤。
我該做什麼;什麼是擴展現有視圖模型的正確方法?如何在淘汰賽中擴展現有視圖模型js
這樣做的一個方法是繼承。因此,您將擁有基本(主視圖)模型,然後爲繼承基本視圖模型創建一個新的視圖模型(根據需要爲每個頁面)。以下是您如何做到這一點的示例(使用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());
你是否考慮過在新對象上繼承和'ko.applybindings'? –
你也可以嘗試在相反的方向上強有力地拉它,看它是否延伸。 –
聽起來更像是你需要一個帶有主頁和頁面的SPA框架嗎? – Anders