2017-01-01 78 views
2

這裏是什麼,我試圖完成一個煮下來的版本:使用哈巴狗混入結果作爲屬性值

mixin foo(bar) 
    = bar + ".html" 

a(href= +foo("baz")) test 

我想有錨標記被編譯爲<a href="baz.html">test</a>,但我而是取而代之的是類型錯誤,在foo不是一個函數。雖然我確實看到它在技術上不是一個函數,但是這不是一個mixin會有用的場景嗎?我已經在帕格文檔中搜索了類似於我的用例場景,但沒有成功。

我想在這裏實現mixin嗎?或者這是唯一可能的常規JS函數作爲上下文變量傳遞?

回答

2

我想你想爲此使用無緩衝的Javascript。對於你的用例,代碼會是這樣的。

- 
    function foo(bar) { 
     return bar + ".html"; 
    } 

a(href=foo("baz")) test 

這將導致下面的HTML:

<a href="baz.html">test</a> 

說明

無緩衝的Javascript是,不會在最終結果被髮射模板邏輯。無緩衝的Javascript注有短劃線(-)。多行無緩衝的Javascript由具有單個選項卡縮進的短劃線定義。

單線

-var foo = "bar"; 

多線

- 
    function randomNumber() { 
     return 4; 
    } 

文檔:https://pugjs.org/language/code.html

+0

謝謝!這也是我最初嘗試過的,但是WebStorm在任何非緩衝代碼塊上拋出的語法錯誤都比一行花括號大。現在我看到這實際上是有效的語法,帕格編譯器接受得很好。這很可能是Jetbrains插件中的一個問題(與提交給其問題跟蹤器的此[問題](https://youtrack.jetbrains.com/issue/WEB-16966)類似)。 – gandreadis