2014-01-24 81 views
0

例如,我在global.js中創建了一個主視圖模型,其中包含一些在所有頁面中使用的功能。然後,在pageA中,我想擴展主視圖模型。但我已在global.js中調用ko.applybindings(masterViewModel)。我無法在pageA.js中更改主視圖模型,然後重新應用它,因爲它會導致錯誤。
我該做什麼;什麼是擴展現有視圖模型的正確方法?如何在淘汰賽中擴展現有視圖模型js

+0

你是否考慮過在新對象上繼承和'ko.applybindings'? –

+0

你也可以嘗試在相反的方向上強有力地拉它,看它是否延伸。 –

+0

聽起來更像是你需要一個帶有主頁和頁面的SPA框架嗎? – Anders

回答

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