在开发 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
目前,mixin 的精简版本如下所示:
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">