2014-02-21 34 views
4

路過的時候變量在玉,你可以通過一個對象給客戶這樣如何檢查是否有玉

路線存在的對象:

res.render('mypage', { 
    title: 'My Page', 
    myobject : data 
}); 

玉模板:

extends layout 

block navbar 
    include includes/navbar 
block top 
    include includes/top 
block content 
    script(src='/js/controllers/test-controller.js') 
    script. 
    var clientobj = !{JSON.stringify(myobject)} 

但是,如果myobject不存在?看起來最簡單的事情是在使用它之前檢查這個對象是否存在(因此,如果它只是試圖定義var clientobj),但我在這裏敲我的腦袋試圖讓這發生。

如:

res.render('mypage', { 
    title: 'My Page' 
}); 

目前將打破定模板,必須有一些語法,使這個代碼更具彈性,肯定..

+0

爲什麼不檢查'clientobj'創建後?如果什麼都沒有,它會是'undefined' – tymeJV

+0

爲什麼不使用玉的條件? –

回答

4

下面的代碼片段應該有所幫助。

script 
    if myobject 
     | var clientobj = !{JSON.stringify(myobject)} 

請注意,你不應該把.(點)在script元素的結尾。否則if myobject ...將被視爲文本而不是Jade代碼。

或者這應該工作太:

script. 
    var clientid = #{myobject ? JSON.stringify(myobject) : "undefined"}; 

在,你會得到下面的HTML代碼,這種情況下,你將不得不處理clientidundefined在一個頁面上的javascrip的代碼。

<script>var clientid = undefined;</script> 

我希望這將有助於

+0

啊哈。嘆氣,我一定嘗試了5種不同的條件陳述,但都是在腳本標籤之外使用翡翠進行檢查,而不是像這樣在裏面。謝謝。 –

+0

@OliverLloyd,我可以幫你解決問題 – Tom