Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pug 使用Jade mixin块作为属性_Pug - Fatal编程技术网

Pug 使用Jade mixin块作为属性

Pug 使用Jade mixin块作为属性,pug,Pug,在开发Jade模板库的同时,希望使用mixin块作为属性值,从而简化最终用户的语法 最终用户可以选择3种方式来创建按钮;通过标签、按钮标签和输入标签。对于输入标记,我希望使用块作为值属性,因此语法始终为: +abtn | A Button +btn | Button +ibtn | I Button +abtn(disabled) | A Button Disabled +btn(disabled) | Button Disabled +ibtn(disa

在开发Jade模板库的同时,希望使用mixin块作为属性值,从而简化最终用户的语法

最终用户可以选择3种方式来创建按钮;通过标签、按钮标签和输入标签。对于输入标记,我希望使用块作为值属性,因此语法始终为:

+abtn
    | A Button
+btn
    | Button
+ibtn
    | I Button
+abtn(disabled)
    | A Button Disabled
+btn(disabled)
    | Button Disabled
+ibtn(disabled)
    | I Button Disabled
目前,mixins的精简版本如下所示:

mixin abtn
    - attributes.href = attributes.href || '#'
    - attributes.role = attributes.role || 'button'
    - if (attributes.disabled) {
    -     attributes.class = (attributes.class === undefined) ? 'disabled' : attributes.class + ' disabled';
    -     attributes.disabled = null
    - }
    a.btn(attributes)
        block

mixin btn
    - attributes.type = attributes.type || 'button'
    button.btn(attributes)
        block

mixin ibtn
    - attributes.class = (attributes.class === undefined) ? 'btn' : attributes.class + ' btn';
    - attributes.type = attributes.type || 'button'
    input(attributes=attributes)
问题在于为ibtn指定value属性要求最终用户语法为:

+abtn
    | A Button
+btn
    | Button
+ibtn(value='I Button')
+abtn(disabled)
    | A Button Disabled
+btn(disabled)
    | Button Disabled
+ibtn(value='I Button Disabled', disabled)
这是不一致的

是否可以通过内置javascript访问块,以便在属性中使用块内容的非空白版本?如果是,怎么做

编辑

为了澄清,我想要以下代码:

+ibtn
      | My button value
要输出:

<input value="My button value">

嗯,这是一个语法问题。当您运行
mixin
时,会以这种方式变为,因为括号中可以提供参数。就是这样:

mixin myMixin (arg1, arg2)
   p=arg1
   p=arg2
+myMixin('Jade is Cool', 'Yeahh!')
被渲染成

<p>Jade is Cool</p>
<p>Yeahh!</p>
它被渲染为

<p id="MyId">Jade is Cool</p>
<p class="myClass" value="Kool">Yeahh!</p>

请记住,
mixin
s是javascript中的函数。

您能用一个例子定义“其内容的非空白版本”吗?看来,是这样吗?您是否在使用其他资源/信息进行开发?@Okuma.Scott添加了一个用法示例,解释了我的目的。关于任何其他资源/信息,都有很多不相关的资源/信息,但大部分都是试用版、错误版和官方文档。我认为这是不可能的。您是否有理由使用
而不是
?块只能与非自动关闭标记一起使用。@Craig是的,因为SEO在语义上存在差异。仅供参考,这些用于引导助手库。
<p id="MyId">Jade is Cool</p>
<p class="myClass" value="Kool">Yeahh!</p>
+abtn()
    | A Button
+btn()
    | Button
+ibtn()(value='I Button')
+abtn()(disabled)
    | A Button Disabled
+btn()(disabled)
    | Button Disabled
+ibtn()(value='I Button Disabled', disabled)