我正在使用以下助手来允许我进行条件比较:
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"
匹配。