在开发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
Run Code Online (Sandbox Code Playgroud)
目前,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)
Run Code Online (Sandbox Code Playgroud)
问题是指定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)
Run Code Online (Sandbox Code Playgroud)
哪个不一致.
是否可以通过内置的javascript访问块,以便可以在属性中使用其内容的非空白版本?如果是这样的话?
编辑
为了澄清,我想要以下玉代码:
+ibtn
| My button value
Run Code Online (Sandbox Code Playgroud)
输出:
<input value="My button value">
Run Code Online (Sandbox Code Playgroud)
嗯,这是一个语法问题。当您运行 , 时mixin
,就会变成这样,因为您可以在括号中给出参数。就是这样:
mixin myMixin (arg1, arg2)
p=arg1
p=arg2
+myMixin('Jade is Cool', 'Yeahh!')
Run Code Online (Sandbox Code Playgroud)
被渲染成...
<p>Jade is Cool</p>
<p>Yeahh!</p>
Run Code Online (Sandbox Code Playgroud)
在这种情况下你想要花费attributes
,它就变成如下:
mixin myMixin (arg1, arg2)
p( id=attributes.id )=arg1
p( class=attributes.class, value=attributes.value )=arg2
+myMixin('Jade is Cool', 'Yeahh!').myClass#MyId( value="Kool" )
Run Code Online (Sandbox Code Playgroud)
其呈现为...
<p id="MyId">Jade is Cool</p>
<p class="myClass" value="Kool">Yeahh!</p>
Run Code Online (Sandbox Code Playgroud)
请注意,有两个括号,第一个是mixin
前导参数,第二个是 attribute mixin
。适用时:
+abtn()
| A Button
+btn()
| Button
+ibtn()(value='I Button')
+abtn()(disabled)
| A Button Disabled
+btn()(disabled)
| Button Disabled
+ibtn()(value='I Button Disabled', disabled)
Run Code Online (Sandbox Code Playgroud)
请记住,mixin
s 是 javascript 中的函数。
归档时间: |
|
查看次数: |
1477 次 |
最近记录: |