2013-02-22 83 views
3

我有一個變量,test,在script.js。我參考script.js在我的index.jade這樣的文檔的頭部:script(type="text/javascript")(src="scripts/script.js")在Jade中使用外部變量

在我的index.jade文件中,我需要使用那個test變量,但是當我嘗試時,在幾乎所有情況下,我收到一個錯誤,說'test' is not defined

我發現,像body(onload="alert(test);")可以訪問test變量,但像p #{test}p= test不能訪問它,這真的是我需要工作。

那麼如何將script.js中的變量傳遞給index.jade以便Jade識別它?預先感謝您提供的任何建議。

+0

你試過把你的'顏色'數組作爲本地變量傳遞到玉? 「外部」意味着什麼:在服務器上或其他JavaScript文件或其他地方? – zemirco 2013-03-07 07:11:28

+1

@zeMirco - 對不起,不清楚;通過外部,我的意思是另一個JavaScript文件鏈接到我的Jade文件。正如我在我的問題中寫的那樣,在玉塊內聲明時,數組工作正常。問題是我想在我的Javascript文件中全局聲明它,並能夠在我的Jade文件中訪問它。 – ben 2013-03-07 15:26:32

回答

3

這是服務器端JavaScript:

- var colors = ['red', 'green', 'blue'] 

這是客戶端:

body(onload="alert(colors);") 

因爲在客戶端這個顏色是不確定的。你可以這樣做:

body(onload="alert(#{colors});") 

編輯:

如果顏色是客戶端的JavaScript變量,那麼你應該做這樣的:

ul#myul 

script 
    window.addEventListener('load', function(){ 
     var ul = document.getElementById('myul'); 
     for(var i = 0; i < colors.length; i++){ 
      var li = document.createElement('li'); 
      li.innerHTML = colors[i]; 
      ul.appendChild(li); 
     } 
    }) 

編輯:

測試客戶端端變量,不能用作服務器端的js變量。要使用它與玉,你應該首先從nodejs像這樣的服務器通過它:

res.render('myviewpath', { test: test }); 
+0

實際上,當'顏色'存儲在外部時,onload =「alert(顏色)」工作,而alert(#{顏色})不工作。比方說,我想將Jade中的'colors'數組中的每種顏色都放入'li'中。如果我正在訪問的數組沒有存儲在Jade文件中,有沒有辦法做到這一點?這就是我遇到的麻煩。 – ben 2013-03-06 18:42:58

+0

@ben見編輯答案 – karaxuna 2013-03-07 06:58:39

+0

謝謝。請看看我編輯的問題,因爲我覺得我不清楚。 – ben 2013-03-07 15:50:04