2011-12-19 52 views
10

我理解rails 3.1資產管道背後的原因:我們將所有JS編譯成整潔的,可緩存的文件以提高性能。太好了,我們想要。如何命名空間我們的JS與Rails資產管道一起使用

但是,加載所有內容也意味着我們必須非常小心,以免在多個頁面上使用特定的ID或類,如果我們附加了一些JS。否則,JS會在兩個頁面上觸發,因爲它總是被加載。

現在,我們要實現的是以下幾點:
*我們希望把一切都在一個單一的JS文件(我們知道我們如何可以單獨加載的文件,只是不希望出現這種情況)
*我們要到命名空間中的JS中的每個controller_name.js所以才加載時相應的命名空間進行初始化
*我們想通過比如從一個數據屬性對我們的佈局

的的<body>標籤讀取電流控制器初始化適當的名稱空間問題是:我們沒有一個好主意如何在JS中實現。特別是,我們應該如何命名空間的JS,然後動態地初始化它基於HTML標記的內容..

任何幫助,非常感謝!

+0

這是一個博客文章,有幾種不同的方法http://house9.blogspot.com/2011/05/rails-31-javascript-execution.html – house9 2011-12-20 03:15:56

回答

15

這裏是一個命名空間上的控制器/行動水平

啓發你基本上聲明你身體這樣

<body data-controller="<%= controller_name %>" data-action="<%= action_name %>"> 
一切辦法

然後這些方法是ca lled(每一個都有一系列的方法 - 所以如果你需要每一頁上的東西,它就是common/init。或者在所有用戶操作上,這在用戶/ init上。或者只有用戶顯示頁面?這是用戶/節目。

SITENAME.common.init(); 
SITENAME.users.init(); 
SITENAME.users.show(); 

我已經使用了它,它的工作原理非常好。

1
JsSpace.on('users', { 
    index: function(){ 
    console.log('index action of users controller'); 
    } 
}); 

由呈現控制器和動作進入身體屬性實施了圖案然後 取它們和執行的匹配功能。 js-namespace-rails

相關問題