在外部JavaScript文件中使用KnockoutJS ViewModel

如何在外部JS文件中创建KO.JS ViewModel然后在html文件中使用它? 这似乎是一件简单的事情,但我无法让它工作,也无法找到有关如何做到这一点的任何明确信息。 如果我忽略了,我道歉,如果有人能指出我的答案,我会删除它。

外部vm:

var myApp = (function (myApp) { myApp.ReportViewModel = function() { var self = this; self.test = ko.observable(); } }(myApp || {})); 

单独的HTML文件:

   My Page  
First Name

Hello, !

($function(){ var reportVM = new myApp.ReportViewModel(); ko.applyBindings(reportVM); });

编辑我做了建议的更改。 这是我的项目现在看起来像但它仍然无法正常工作。 此外,knockout.js代码根本没有运行。

你正走在正确的道路上。 作为@nemesv注释,您可能需要先引用外部JS才能使用它。 另外,我建议为您的应用创建一个名称空间对象。 所有这些一起看起来像这样:

  My Page  
First Name

Hello, !

PS。 请注意,我在第二行reportVM new reportVM更改为reportVM 。 这只是一个变量,不需要“新”它。 另外,我已修复了该位脚本上的括号位置。

myApp.js有这样的:

 var myApp = (function (myApp) { myApp.ReportViewModel = function() { var self = this; self.test = ko.observable("Testing 123"); } return myApp; }(myApp || {})); 

这样,您的应用程序的ReportViewModel和其他构造函数之类的东西不会在全局命名空间中停留,而是将成为myApp对象的一部分(如果您愿意,则为“命名空间”)。