次のヘルパーを使用して、条件付き比較を実行できるようにしています。
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
含むオブジェクトと、現在選択されているモードを含む文字列を渡します。modes
curmode
私が知る限り、すべてが正常に渡されています -data.curmode
とそれぞれdata.modes
が正しく表示されます。ただし、selected="selected"
一致を出力していません。