2013-07-19 98 views
0

使用DOM的執行加伯方法:如何將此Coffeescript拆分爲單獨的文件?

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); 

我怎麼能使用單獨的.coffee文件翼滑軌管道這種技術?

我想要做以下

users.js.coffeee

SITENAME = 
    users: 
    init: -> 
     alert("nope") 

    index: -> 
     alert("hi") 

但如果我這樣做了,它只是重寫,並迫使我把它全部在一個文件中。

我該如何拆分它並在此技術中爲每個頁面使用命名空間?

回答

0

首先,確保你把它放置在的application.js清單文件:

//= require global 
//= require users 

哪裏global.coffee握着你的實用方法。你的例子users.coffee看起來很好。但是,您需要將SITENAME範圍設置爲window,以便全面訪問它。

// global.coffee 
window.SITENAME = ... 

// users.coffee 
window.SITENAME.users = ... 

你需要做到這一點,因爲CoffeeScript的編譯會自己關閉中的每個文件......從而限制範圍,除非你明確地把它分配給窗口。

(function() { 
    window.SITENAME.users = {}; 
}).call(this); 
相關問題