使用 Garber 方法执行 DOM:
SITENAME = {
common: {
init: function() {
// application-wide code
}
},
users: {
init: function() {
// controller-wide code
},
show: function() {
// action-specific code
}
}
};
UTIL = {
exec: function( controller, action ) {
var ns = SITENAME,
action = ( action === undefined ) ? "init" : action;
if ( controller !== "" && ns[controller] && typeof ns[controller][action] == "function" ) {
ns[controller][action]();
}
},
init: function() {
var body = document.body,
controller = body.getAttribute( "data-controller" ),
action = body.getAttribute( "data-action" );
UTIL.exec( "common" );
UTIL.exec( controller );
UTIL.exec( controller, action );
}
};
$( document ).ready( UTIL.init );
我如何在 Rails 管道中的单独 .coffee 文件中使用这种技术?
我想做以下
users.js.coffee
SITENAME =
users:
init: ->
alert("nope")
index: ->
alert("hi")
但如果我现在这样做,它只会重写它并迫使我将它全部保存在一个文件中。
在这种技术中,如何将其拆分并为每个页面使用命名空间?