使用小胡子模板,在选择列表中选择正确的选项

时间:2013-06-17 18:35:40

标签: mustache

我有一个使用Mustache模板的服务器呈现表单。提交表单时,如果出现错误,我会重新显示表单以及一些错误。我希望使用提交的相同值重新填充字段。

但是,我不确定如何从选择列表中标记正确的项目。这是我的数据:

errors = {'required': ['name']}, 
fields = {name: 'Matt', option: 'sales'};

我使用这样的模板:

<form method="post" action="submitform" id="submitform">
    <input type="text" id="name" name="name" value="{{fields.name}}">
    <select name="contact" id="contact">
        <option value="support">Support request</option>
        <option value="sales">Sales help</option>
        <option value="press">Press information</option>
    </select>
    <button type="submit" name="submit">Send message</button>
</form>

在此示例中,我希望select中的第二个选项具有selected属性。在这种情况下,我不想使用Javascript。有什么建议吗?

我喜欢Mustache提供的无逻辑模板的概念,但我仍然围绕着实际细节。

在具有更多逻辑的工具中,例如Django模板,我可能会说:

<option value="sales" {%if fields.option == 'sales'}selected{% endif %}>

感谢您的任何提示。

2 个答案:

答案 0 :(得分:7)

Mustache并非完全无逻辑。它只是 逻辑少。

在模型上为每个名为“selected”的行创建一个字段,然后输出如下:

<form method="post" action="submitform" id="submitform">
    <select name="contact" id="contact">
        {{#options}}
            <option name="{{name}}" {{selected}}>{{name}}</option>
        {{/options}}
    </select>
    <button type="submit" name="submit">Send message</button>
</form>

你的模型看起来像这样(这是Java BTW,你可以做同样的事情:

    public class Option {
        public String name;
        public String selected;

        public Option(String name, boolean seleted){
            this.name = name;
            this.selected = seleted ? "selected" : "";
        }
    }

答案 1 :(得分:1)

根据ryber的建议,我添加了一个库来处理这个问题。它包括一些注释(即将发布的更新文档)

https://github.com/gmjordan/options.mustache.java