Pug 在翡翠中?
我正在将对象Pug 在翡翠中?,pug,Pug,我正在将对象school传递到我的编辑表单中,并希望将其中一个选项设置为选中状态。School有一个属性focus,对于JavaScriptSchool.focus=1,对于PythonSchool.focus=2,对于Ruby on RailsSchool.focus=3) 如何编写内联条件以将其中一个选项设置为“已选”? //- Focus div(data-role='fieldcontain') fieldset(data-role='controlgroup') label
school
传递到我的编辑表单中,并希望将其中一个选项设置为选中状态。School有一个属性focus
,对于JavaScriptSchool.focus=1
,对于PythonSchool.focus=2
,对于Ruby on RailsSchool.focus=3
)
如何编写内联条件以将其中一个选项设置为“已选”?
//- Focus
div(data-role='fieldcontain')
fieldset(data-role='controlgroup')
label(for='focus') Focus
select(name='focus')
option(value='JavaScript') JavaScript
option(value='Python') Python
option(value='Ruby on Rails') Ruby on Rails
当存在赋值(值=)时,我已使这种类型的内联条件起作用:
幸运的是,Jade非常棒,您根本不需要使用三元。接吻
div
fieldset
label Focus
select
option(value='JavaScript', selected=(school.focus == 1)) JavaScript
option(value='Python', selected=(school.focus == 2)) Python
option(value='Ruby on Rails', selected=(school.focus == 3)) Ruby on Rails
因此,如果locals.school.focus
是2
,那么您将得到以下标记:
<div>
<fieldset>
<label>Focus
<select>
<option value="JavaScript">JavaScript</option>
<option value="Python" selected="selected">Python</option>
<option value="Ruby on Rails">Ruby on Rails</option>
</select>
</label>
</fieldset>
</div>
集中
JavaScript
python
RubyonRails
演示@
我建议稍微进行重构,将值和标签从标记中分离出来,这样您就可以让Jade对它们进行迭代,但这是一般的想法
N.B.如果标签是要标记的元素的父元素,则可以完全忽略标签的
for
属性
如果未指定for属性,但label元素有一个可标记的元素子体,则树顺序中的第一个此类子体是label元素的标记控件
…所有这些都表明:在您的情况下,该标签的
for
属性是多余的,您可以将其删除。非常有效,感谢您的快速响应!当你说要把值和标签从标记中分离出来时,你能举例说明你的意思吗?把它们放到一个数组中,比如[{label:'JavaScript',value:'JavaScript'},{label:'Python',value:'Python'},{…}]
,然后在该数组上迭代生成
元素。当然,如果选项的值总是与其文本相同,正如您的示例所示,您也可以完全忽略值属性。@user949300文档确实很糟糕,但我不认为否决票在这里特别有建设性。。。
<div>
<fieldset>
<label>Focus
<select>
<option value="JavaScript">JavaScript</option>
<option value="Python" selected="selected">Python</option>
<option value="Ruby on Rails">Ruby on Rails</option>
</select>
</label>
</fieldset>
</div>