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
,对于JavaScript
School.focus=1
,对于Python
School.focus=2
,对于Ruby on Rails
School.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>