Javascript 重用Knockout.js视图模型

Javascript 重用Knockout.js视图模型,javascript,knockout.js,Javascript,Knockout.js,大家好,我正在用Knockout.js构建多页应用程序,我面临着编写太多重复代码的问题 例如,在我的一个观点中,我有: var personVm = function { //properties here } personVm.prototype { //extensions & methods here } 在某些情况下,我必须在其他视图中使用相同的ViewModel。。所以我最终复制了代码 我搜索了解决方案,require.js是最常见的。。但是在我的情况下r

大家好,我正在用Knockout.js构建多页应用程序,我面临着编写太多重复代码的问题

例如,在我的一个观点中,我有:

var personVm = function {

   //properties here

}

personVm.prototype {

  //extensions & methods here

}
在某些情况下,我必须在其他视图中使用相同的ViewModel。。所以我最终复制了代码

我搜索了解决方案,require.js是最常见的。。但是在我的情况下require.js不合适,我不能使用它。因此,如果有人能分享一些解决这个问题的方法,我会很高兴

更新:


为了进一步澄清我的问题,我需要某种容器,从中我可以为我的不同视图(从asp.net获得)获取给定ViewModel的实例

然后,以后

var superHeroVm = function() { 
    var self = this;

    self.specialPower = ko.observable();

    ko.utils.extend(self, new personVm());
}

为什么你不能把personVm保存在一个文件中,你可以从各地访问它,然后每次都创建一个新的文件

thisModel.person = new personVm(data);

otherModel.person = new personVm(data);

或者我没有正确理解这个问题?

是的,看起来很合理,但我不想扩展,我只想在不同的视图中重用相同的视图模型。另外,ko.utils.extend(self,new personVM())将如何知道personVM,因为personVM在不同的脚本中。谢谢这就是extend所做的。它使“personVm”成为其他视图模型的“基础”。所以超级英雄VM将包含personVm的属性。。。如果你能充实你的问题,包括更多你想要达到的目标,我会更新我的答案
thisModel.person = new personVm(data);

otherModel.person = new personVm(data);