【问题标题】:Jade select field populating data玉选择字段填充数据
【发布时间】:2012-04-28 11:11:33
【问题描述】:

有没有更好的方法来填充基于 Jade 的选择字段,我目前正在使用这个示例。有没有更好的方法不破坏模板代码?

item值为'day'的例子。

    select
      repeation = [ 'no-repeat', 'day', 'week', 'month']
      for item in repeation
        if job.repeat == item
          option(selected="true") #{item}
        else
          option #{item}

当项目是 ['day', 'week'] 的数组时,如何显示多个选择?

// 为多个元素编辑可能的小解决方案

      enginges = [ 'google', 'bing', 'yahoo', 'duckduckgo']
      for engine in enginges
        option(selected=job.sources.indexOf(engine) != -1) #{engine}

【问题讨论】:

    标签: javascript node.js pug


    【解决方案1】:

    您应该能够执行以下操作:

    for item in repeation
      option(selected=job.repeat == item) #{item}
    

    同样的概念应该能够应用于多项目选择下拉菜单。

    【讨论】:

    • 这很好用,我编辑我的帖子也添加了多项选择。
    • 这只是 javascript。 “job.repeat == item”返回真或假。从函数返回值时可以应用相同的概念,您可以直接返回表达式。
    • 这非常有效。我不知道为什么 - 我认为 selected 的 html 只是 "
    • @DanielM 你是对的。 HTML5 仅支持 selectedselected="selected"。但。是玉。这都是关于 JavaScript 的。写el.selected = true是正确的。问题是:如果job.repeat = "day",Jade 会将option(selected=job.repeat == item) #{item} 编译为<option selected="selected">day</option>
    【解决方案2】:

    要添加到答案中的几件事 (https://stackoverflow.com/a/10368381/870274):

    1. 现在更常用的是“each”而不是“for”

    2. 不要忘记该行的“-”:repeat = [ 'no-repeat', 'day', 'week', 'month'] ,否则会出现编译错误。所以决赛 结果是 (和你的一样):

      select
        - repeation = [ 'no-repeat', 'day', 'week', 'month']
        each item in repeation
          option(selected=job.repeat == item) #{item}
      

    【讨论】:

    • 不是“上/下”,而是用非位置的东西来引用其他帖子。比如说作者的名字,或者帖子的链接。现在,只有问题高于你的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多