重用Knockout.js ViewModels

时间:2014-04-09 15:19:37

标签: javascript knockout.js

您好我正在使用Knockout.js构建多页面应用程序,并且我面临着编写过多重复代码的问题。

作为我的一个观点中的例子我有:

var personVm = function {

   //properties here

}

personVm.prototype {

  //extensions & methods here

}

在某些时候我必须在其他视图中使用相同的ViewModel ..所以我最终复制代码..

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

更新

要清除更多我的问题,我需要某种容器,我可以从中获取给定ViewModel的实例以获取不同的视图(我从asp.net获取)

2 个答案:

答案 0 :(得分:1)

你可以使用淘汰赛自己的ko.utils.extend

var personVm = function {
   //properties here
}

personVm.prototype {
  //extensions & methods here
}

然后,稍后

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

    self.specialPower = ko.observable();

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

答案 1 :(得分:0)

为什么不能将personVm保存在一个文件中,您可以从该文件中访问并每次都创建一个新文件?

thisModel.person = new personVm(data);

otherModel.person = new personVm(data);

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