2014-07-23 46 views
-1

我有以下代碼玉 -如何使用jade顯示可點擊的鏈接?

<jade> 

    each item in reports 
     ul 
      div.lstheader #{item.user} 
      each val in item.status 
        li #{val} 
<jade> 

報告不過是JSON對象,比如如下

status: [ 'test', 'test message','http://stackoverflow.com/questions/ask' ] } 

我想顯示如果item.status如果它是一個鏈接的可點擊的鏈接 但如何我可以做它運行時間?

回答

1

那麼你可以在Jade中使用vanilla JS,只需在-前面添加代碼即可。

所以,你可以這樣做:

- if (val.hasIndexOf("http")) // This is NOT a very robust test, maybe try with RegExp 
     li: a(href=val)= val 
- else 
     li= val 

但在我看來,你應該從玉任何邏輯搬走。 在一個完美的世界裏,我認爲玉器應該限於展示的目的。

你可以這樣做:現在

// In Node.js 
var elements = [ 
{ 
    "label" : "test" 
}, 
{ 
    "label" : "test message" 
}, 
{ 
    "label" : "Go To SO", 
    "href" : "http://stackoverflow.com/questions/ask" 
} 
]; 

// In Jade 
each val in item.status 
    if (val.href) 
     li: a(href=val.href)= val.label 
    else 
     li= val.label 

,這顯然是不完美的,因爲你仍然執行玉測試,但至少它不是可能不會成功取決於什麼樣的鏈接黑幕測試你想要顯示,並且你想要顯示的項目都有相同的結構。但是,這還不完美。也許你可以找到更好的解決方案。

+0

謝謝,我正面臨的真正問題有時我有字符串,如「鏈接是http://stackoverflow.com/questions/ask」或「一些文本http://stackoverflow.com/questions/ask,然後http://stackoverflow.com/questions/ask「在這種情況下如何顯示鏈接使用玉 – anish

+0

嗯,它基本上是一樣的東西......我不明白什麼阻止你在這裏。 您需要使用Jade中的字符串匹配函數('RegExp'或'String.prototype.indexOf()')來提取URL部分,或者最好在Node/Express中提取URL部分,並使用上面提出的兩種方法 –