我明白,出于性能原因,最好让 Assets 管道连接并缩小我所有的 javascript,并在每次页面请求时发送全部内容。这很公平
但是,我的一堆 javascript 是将特定行为绑定(bind)到特定页面元素之类的东西——比如
$('button').click(function(e) { $('input.sel').val(this.name); }
如果我知道这段代码只在那个页面上执行,我会感觉更舒服 - 而不是在可能巧合地具有具有相同 ID 的元素或匹配相同选择器的每个其他页面上人们如何处理这个?
我宁愿不把所有这些东西内联到元素中,只是因为当它超过两行时,在 .html.erb 文件中保持 javascript 正确缩进比它需要做的更多工作
最佳答案
这是我所做的(基于一些 stackoverflow 答案):
application_helper.rb
def body_page_name
[controller_name.classify.pluralize, action_name.classify].join
end
应用程序.html.haml
%body{data: {page: body_page_name}}
应用程序.js
$(function() {
var page = $("body").data("page");
if("object" === typeof window[page])
window[page].init();
});
在适当的 js 文件中有一个名为 ControllerAction 的对象:
门票.js
var TicketsShow = new function() {
var self = this;
self.init = function() {
// code which may call other functions in self
};
};
可能有更好的方法,但这对我有用
关于javascript - 如何使用 Rails Assets 管道执行每页 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8976430/