让我们说有两个页面有两个不同的html元素,它们具有相同的名称
a.html
<select id='collection_select'></select>
b.html
<select id='collection_select'></select>
并且有一个javascript函数,只能应用于a.html
a.js
$(function(){
$('#collection_select').change(function(){
....
})
})
Becase Rails连接所有JS资产,此功能现在也适用于b.html
。是否有Rails / Sprockets / JS最佳实践以特定方式构造和命名JS资产,以便JS的范围仅限于特定页面。
答案 0 :(得分:0)
这篇博文提供了一个很好的方法:http://viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution
总结一下它涉及
data-controller
标记上添加<body>
属性。data-controller
的JS命名空间中加载JS。干杯
答案 1 :(得分:-1)
JsSpace.on('users', {
index: function(){
console.log('index action of users controller');
}
});
该模式由渲染控制器和动作实现到body属性中 获取它们并执行匹配功能。 js-namespace-rails