使用把手渲染选择了选项的HTML选择元素

时间:2018-01-15 21:24:05

标签: handlebars.js

我使用Handlebars渲染HTML select,但是如果此值本身已经是渲染数据属性,则无法设置所选值。我发现other解决方案并不令人满意,因为它们没有解决这一特定问题。

我试过

<select>
    {{#each countriesList}}
    <option value="{{@key}}" {{{isSelected ./setCountry @key}}}>
        {{this}}
    </option>
    {{/each}}
</select>

我有以下helper尝试设置所选值

isSelected: function (Country, key) {
    return Country === key ? 'selected' : ''; 
}

我在expressjs中渲染

var countries = {'en': 'England', 'fr': 'France', 'de' : 'Germany'};
var data = {'countriesList':countries, 'setCountry': 'fr'};
res.render('home', data);

它应该将法国选项设置为所选选项,但它不起作用!我也尝试从辅助函数中获取呈现的属性,但没有成功。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。显然它与点有关。而不是./应该../来引用主数据变量。现在它可以工作

<select>
    {{#each countriesList}}
    <option value="{{@key}}" {{{isSelected ../setCountry @key}}}>
        {{this}}
    </option>
    {{/each}}
</select>

助手:

isSelected: function (Country, key) {
    return Country === key ? 'selected' : ''; 
}

expressjs:

var countries = {'en': 'England', 'fr': 'France', 'de' : 'Germany'};
var data = {'countriesList':countries, 'setCountry': 'fr'};
res.render('home', data);