繁体   English   中英

Rails引擎:使主机应用javascript可用于Mounted Engine

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM