0

次のヘルパーを使用して、条件付き比較を実行できるようにしています。

Handlebars.registerHelper("ifCond", function (v1, operator, v2, options) {
  switch (operator) {
  case "==":
    return (v1 == v2) ? options.fn(this) : options.inverse(this);
  case "===":
    return (v1 === v2) ? options.fn(this) : options.inverse(this);
  case "<":
    return (v1 < v2) ? options.fn(this) : options.inverse(this);
  case "<=":
    return (v1 <= v2) ? options.fn(this) : options.inverse(this);
  case ">":
    return (v1 > v2) ? options.fn(this) : options.inverse(this);
  case ">=":
    return (v1 >= v2) ? options.fn(this) : options.inverse(this);
  default:
    return options.inverse(this);
  }
});

次に、テンプレートを次のように設定します。

<select name="mode">
    {{#each data.modes}}
    <option {{#ifCond data.curmode '==' this}} selected="selected" {{/ifCond}} value="{{this}}">{{this}}</option>
    {{/each}}
</select>

(使用可能なモードのフラットな配列、文字列) をdata含むオブジェクトと、現在選択されているモードを含む文字列を渡します。modescurmode

私が知る限り、すべてが正常に渡されています -data.curmodeとそれぞれdata.modesが正しく表示されます。ただし、selected="selected"一致を出力していません。

4

1 に答える 1