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
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可用于我的引擎。遗憾的是,它不起作用。
感谢您的帮助!
答案:在每个引擎中:如果你想加载到主机应用程序的javascript文件中,只需在引擎的javascript清单文件中添加这一行:
//= require application.js
这指的是主机应用程序的application.js
文件,而不是引擎。引擎的application.js文件是有名称空间的,以便区分两者:
例如:my_engine/application.js
将主机应用程序的css加载到引擎的每个css中也是如此。只需将这一行放在引擎的清单文件中,即可使主机应用程序的css对您的引擎可用:
*= require application.css
相关文章:
- 将函数的上下文应用于javascript变量
- keyup事件处理程序更改焦点不适用于快速键入
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- PHP中的setcookie仅适用于localhost
- 包括用于facebook评论框的JavaScript SDK
- 如何检测用于WebGL的专用或集成显卡
- ng更改事件不适用于Dropdown
- 用于搜索的聚合物嵌套绑定
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- JS编译器/包管理器,用于版本控制
- 将CSS应用于printWindow.print();在Javascript中
- 用于'魔术串'属性
- 用于检查数组中是否存在元素的javascript自定义方法
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 在ajax成功后,cluetip不适用于首次点击活动元素
- D3.js模式不适用于弧形或圆环图
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- Rails引擎:使主机应用程序javascript可用于Mounted Engine