2013-11-14 79 views
2

我有一個基礎的淘汰賽模型名單的工作,與常見的功能(分頁,排序等):最佳實踐重用淘汰賽模型

ListViewModel.js:

function ListViewModel() { 
    var self = this; 

    self.Items = ko.observableArray(); 
    // other props and methods 
} 

return ListViewModel; 

現在,我想重用(繼承)這個模型的具體類UsersListViewModel。什麼是最好的方式(接受淘汰賽)來做到這一點?在UsersListViewModel中創建ListViewModel,還是使用新的字段和方法擴展ListViewModel?

現在我已經創建了內部UsersListViewModel一個ListViewModel對象,但我不喜歡這樣的:

UsersListViewModel:

function UsersListViewModel(model) { 
     var self = this; 

     self.List = new ListViewModel(); 
     self.IsInitialized = ko.observable(false); 
} 

return UsersListViewModel; 

回答

3

在過去,當我們不得不做這樣的事情,我們只是用來申請(http://jsfiddle.net/85TeD/1/):

function UsersListViewModel() { 
    var self = this; 

    ListViewModel.apply(self); 

    self.OtherProp = ko.observable("other"); 

} 

如果要實行全員經典的繼承,這是一個開始:http://www.crockford.com/javascript/inheritance.html

+0

謝謝,你的建議與申請是非常好的。 – alexmac

+0

是否適用將所有observable都複製到傳遞的引用? – Nishanthan

+1

@Nish Yup,它應該在ListViewModel – pax162