2011-12-08 79 views
37

我有我的node.js項目的玉模板。我想發送一個對象到jade模板,並將它傳遞給頁面內的一個函數(以呈現一些東西)。Jade模板,如何將具體對象傳遞給頁面?

我相信,我從服務器發送正確的東西,像這樣

res.render(__dirname + '/pages/viz.jade', { 
    vizJson: newJson, 
}); 
在客戶端

我做這樣的事情:

script 
    sunburst(#{vizJson}) 

因此,腳本函數裏面,我想調用一個函數,用我在服務器端創建的一些json創建我的可視化。

問題是,當呈現我有類似sunburst([Object object])。我也嘗試發送字符串版本的JSON,但是當我做JSON.parse(#{vizJson})它抱怨像Unexpected token &

我發送的json總是不同的,並且具有不同的深度級別。

有誰知道該怎麼辦?

謝謝

回答

72

我希望這會幫助某人。我解決了它這樣的:

script 
    sunburst(!{JSON.stringify(vizJson)}) 

通知的!{...}包裹字符串化方法。

+0

它幫助我!謝謝 –

+0

我的json回來了,像這樣:''{\「some_key \」:...}「'。這可能是我如何獲得原始json對象的產物,但對於此示例,我將輸出封裝在頁內JSON.parse(「{\」some_key \「:...}」)方法中。該對象似乎在瀏覽器中正常工作。 – hellatan

+0

這太酷了。非常感謝! – detj

3

爲了這個工作,你需要在服務器上進行串聯。

res.render(__dirname + '/pages/viz.jade', { 
    vizJson: JSON.stringify(newJson), 
}); 

然後,正如您所提到的,解析客戶端上的JSON。

script 
    sunburst(JSON.parse(#{vizJson})) 

希望有所幫助!

+1

您不需要在客戶端調用'JSON.parse',因爲代碼已經在'script'標籤內。 – fent

+1

對不起,沒有奏效。這是我嘗試過的一件事。無論如何,我發現如何去做。 – Masiar

+0

啊,很好。 – btford

2

奇怪的是,對我來說,解決方案沒有調用JSON.parse。我在服務器上對我的對象進行了字符串處理,並使用了!{vizJson}方法,並獲得了我的對象clientside。

%的文檔,轉義字符串插值:http://jade-lang.com/reference/interpolation/

+2

我估計事情已經在5年內發生了變化:)感謝您抽出寶貴時間發佈此信息! – Masiar

0

在JS端,您發回

res.render(__dirname + '/pages/viz.jade', { 
    vizJson: JSON.stringify(newJson), 
}); 

在HTML方面,我發現這樣的:

JSON.parse('!{vizJson}') 

工程。

相關問題