Use pug mixin result as attribute value

旧街凉风 提交于 2019-12-23 22:45:45

问题


Here is a boiled-down version of what I'm trying to accomplish:

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

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

I'd like to have the anchor tag be compiled as <a href="baz.html">test</a>, but what I'm getting instead are type errors, on foo not being a function. Although I do see that it technically isn't a function, is this not a scenario where a mixin would be useful? I've searched the pug documentation for use-case scenarios similar to mine, but without success.

Is what I'm trying to achieve here possible with mixins? Or is this only possible with regular JS functions passed as context variables?


回答1:


I think you want to use unbuffered Javascript for this. For your use case, the code would be like so.

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

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

This would result in the following HTML:

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

Explanation

Unbuffered Javascript is template logic which will not be emitted in the final result. Unbuffered Javascript is annotated by a dash (-). Multi line unbuffered Javascript is defined by a dash with a single tab indent.

Single line

-var foo = "bar"; 

Multi line

-
    function randomNumber() {
        return 4;
    }

Documentation: https://pugjs.org/language/code.html



来源:https://stackoverflow.com/questions/41415049/use-pug-mixin-result-as-attribute-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!