2011-10-20 24 views
5

我試圖讓玉自動生成的URL對我來說:node.js jade模板 - 自定義語法和替換?

,所以如果我有這樣的用戶鏈接:

.userLink 
    a(href="/#{user}") #{user} 

我希望能夠與像來取代它(假設語法):

.userLink 
    userLink(#{user}) 

反正做到這一點?

感謝

編輯:好的,我明白了:

mixin userLink(user) 
    a(href="/" + user)= user 

mixin userLink("Bob") 

好像會工作。

+0

不錯!很高興你得到了一些小問題。 –

回答

3

更新:

這是一個使用jade mixins的版本。可悲的是,我似乎無法在「a」標籤的帶括號的屬性列表中找到「用戶」變量。

mixin userLink(user) 
    a(href="/" + user)= user 

mixin userLink("Bob") 
mixin userLink("Alice") 
mixin userLink("Cooper") 

生成此HTML

<a href="/undefined"></a> Bob 
<a href="/undefined"></a> Alice 
<a href="/undefined"></a> Cooper 

只要把一個輔助函數到您的當地人對象,並從模板中的玉模板調用它

locals = {userLink: function(userName) { return "<a href=....."}} 

jade.render('myview', {locals: locals}) 

然後做:

= userLink(user) 

您可能還想看看可能註冊的dynamicHelper function

+0

我在客戶端使用jadevu和jade,所以對我來說這不是一個好選擇。我也想在玉石中保留模板材料,而不是在JS中使用它。 – Harry

+0

呃,如果「模板材料」涉及到功能,那麼就不會發生。代碼準備數據,玉將其吐入HTML中。 –

+0

雖然不是mixins的意思嗎?你如何使用mixins – Harry