2012-01-30 54 views
3

我正在使用Sinatra文檔中提到的部分幫助程序模塊。當我在部分中添加JavaScript時,它被放置在HTML輸出中,正好放在我放置的位置。但是在腳本塊中有一個新的js/jsquery--1.7.js/eval/seq/[1](array)(我可以從firebug中看到這個),這相當於我放入partials文件中的內容,並且這也得到了評估,因此事件再次被觸發。Sinatra - 如何在分支中添加javascript

假設你在部分中放置了一個alert('helloworld') - 它會被觸發兩次。發生了什麼以及如何避免這種情況?

+0

我是否缺少任何東西.... – coool 2012-02-01 21:20:06

+0

您可以使用JS內聯,如slim-lang文檔中所述。然而,如果你把你的部分,確保你不會給他們打電話兩次。如果您在所有視圖中都需要它們,我會將它們放在佈局中。 – three 2012-02-01 21:25:45

+0

不,我不叫它..它執行兩次..你可以嘗試一個簡單的腳本:在部分它會執行兩次的JavaScript警報('你好世界')。操作 – coool 2012-02-01 21:27:19

回答

2

這個答案可能會明顯更好,但是你必須發佈一些示例代碼來說明你如何使用部分內容(如4天前通過@summea所要求的那樣)。

你的問題聽起來像你看到你放在頁面中的部分呈現的JavaScript代碼,一次在你放它的HTML和一次在Firebug(「js/jsquery-1.7.js/eval/seq/1" )。

確保您只將該特定部分渲染到頁面上,否則JavaScript將多次觸發(因爲它在頁面上多次觸發)。

換句話說:

<%= render "myPartialWithJavaScript" %> 

<h1>My Page</h1> 

<p>Welcome to my page!</p> 

細密:

<%= render "myPartialWithJavaScript" %> 

<h1>My Page</h1> 

<p>Welcome to my page!</p> 

<%= render "myPartialWithJavaScript" %> 

會導致你的JavaScript被多次執行。