以下是我想要做的快速视频:
var hostAppJs = {
callMe: function(){
alert("CALL ME FROM MAIN APP ");
}
}
var hookedInEngineJs = {
init: function(){
$('button').on('click', function(){
hostAppJs.callMe();
});
}
}
hookedInEngineJs.init();
基本上,我希望所有主机应用程序的javascript可用于已安装的引擎。当javascript全部用于我的挂载引擎时,它应该看起来像在上面,即使hostAppJs
javascript对象仅存在于主机应用程序中,并且hookedInEngineJs
javascript对象仅存在于安装发动机。
我遇到的问题是,当我在挂载的引擎内部时,它找不到hostAppJs
对象,因此看起来没有为挂载的引擎正确加载它。
以下是我的主机应用的application.js
文件:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
这是我的挂载引擎的application.js
文件:
//= require '/<absolutePathToHostApp>/assets/javascripts/application.js'
//= require_tree .
所以我假设对于我的挂载引擎,来自主机应用程序的所有javascript都被加载并提供给我的引擎,然后它加载到它自己的所有javascript中。因此,我认为我的主机应用程序的javascript可用于我的引擎。可悲的是,它不起作用。
感谢任何帮助,谢谢!
答案 0 :(得分:0)
答案:在每个引擎中:如果要加载主机应用程序的javascript文件,只需在引擎的javascript清单文件中添加此行:
//= require application.js
这是指主机应用的application.js
文件,而不是引擎。引擎的application.js文件是命名空间,以便区分两者:
ex:my_engine/application.js
将主机应用程序的css加载到每个引擎的css中也是一样的。只需将此行放在引擎的清单文件中即可使主机应用程序的css可供您的引擎使用:
*= require application.css