6

我有一个使用 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 %}>

感谢您的任何提示。

4

2 回答 2

7

Mustache is not entirely logic-less. It's just mostly logic-less.

Have a field on your model for each row called "selected" and just output it like this:

<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>

your model would look like this (this is Java BTW, you can do the same in whatever:

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

        public Option(String name, boolean seleted){
            this.name = name;
            this.selected = seleted ? "selected" : "";
        }
    }
于 2013-06-18T00:42:58.660 回答
1

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

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

于 2013-07-29T22:00:41.250 回答