2013-11-14 81 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