web-dev-qa-db-ja.com

ジェイド選択フィールドにデータを入力

Jadeベースの選択フィールドにデータを入力するためのより良い方法はありますか?私は現在この例を使用しています。テンプレートコードを台無しにしないもっと良い方法はありますか?

アイテムの値は「日」の例です。

    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}
19
Risto Novik

あなたは次のようなことができるはずです:

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

同じ概念が複数のアイテム選択ドロップダウンに適用できるはずです。

35
AntelopeSalad

答えに追加するいくつかのこと( https://stackoverflow.com/a/10368381/870274 ):

  1. 「それぞれ」が「for」ではなく、現在より一般的に使用されています

  2. 行の「-」を忘れないでください:repeation = ['no-repeat'、 'day'、 'week'、 'month']、そうしないとコンパイルエラーが発生します。したがって、最終結果は(あなたと同じ)になります。

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