![](/img/trans.png)
[英]How do I make a JavaScript function available globally in Rails 6 with Webpack?
[英]Rails Engines: Make host app javascript available to Mounted Engine
这是我正在尝试做的快速概览:
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
到我安装的引擎中时,即使hostAppJs
javascript对象仅存在于主机应用程序中,并且hookedInEngineJs
javascript对象仅存在于已安装的引擎中,它也应该看起来像上面的hostAppJs
。
我遇到的问题是,当我在已安装的引擎中时,它找不到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可用于我的引擎。 可悲的是,它不起作用。
任何帮助表示赞赏,谢谢!
答:在每个引擎中:如果要加载主机应用程序的javascript文件,只需在引擎的javascript清单文件中添加以下行:
//= require application.js
这是指主机应用程序的application.js
文件,而不是引擎。 引擎的application.js文件被命名为命名空间,以区分两者:
例如: my_engine/application.js
将主机应用程序的CSS加载到引擎的每个CSS中都是相同的。 只需将以下行放入引擎的清单文件中,即可使主机应用的css对您的引擎可用:
*= require application.css
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.