2013-06-17 34 views
5

Tôi có biểu mẫu được máy chủ hoàn trả sử dụng các mẫu Mustache. Khi biểu mẫu được gửi, nếu có lỗi, tôi sẽ đổi lại biểu mẫu cùng với một số lỗi. Tôi muốn các trường được điền lại với cùng giá trị đã được gửi.Sử dụng các mẫu bộ ria mép, đánh dấu tùy chọn đúng trong danh sách lựa chọn như được chọn

Tuy nhiên, tôi không chắc chắn cách đánh dấu mục thích hợp từ danh sách chọn. Dưới đây là dữ liệu của tôi:

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

Và tôi sử dụng một mẫu như thế này:

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

Trong ví dụ này, tôi mong đợi sự lựa chọn thứ hai trong các lựa chọn để có một thuộc tính selected. Tôi không muốn sử dụng Javascript trong trường hợp này. Bất kỳ đề xuất?

Tôi thích khái niệm mẫu ít logic hơn, như được cung cấp bởi Mustache, nhưng tôi vẫn gói đầu quanh các chi tiết thực tế.

Trong một công cụ với một chút logic hơn, ví dụ Django mẫu, tôi có thể nói:

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

Thanks cho bất kỳ lời khuyên.

Trả lời

5

Ria mép không hoàn toàn logic. Chỉ là chủ yếu là ít logic hơn.

Có một lĩnh vực trên mô hình của bạn cho mỗi hàng được gọi là "chọn" và chỉ ra nó như thế này:

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

mô hình của bạn sẽ trông như thế này (đây là Java BTW, bạn có thể làm như vậy trong bất cứ điều gì :

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

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

Cảm ơn, tôi nghĩ câu trả lời là tôi cần suy nghĩ về dữ liệu của mình một cách khác nhau. Theo một nghĩa nào đó, điều này làm phức tạp mã phía máy chủ của tôi để đơn giản hóa mã phía máy khách của tôi. Đó có thể là một đôi khi khó khăn. – newz2000

+0

Có và không. Bạn thực sự có thể kết hợp trong một số logic cho phía máy khách dữ liệu, ngay trước khi bạn render mẫu. Trong thực tế, tôi hầu như luôn luôn làm điều này hơn là đi qua json thẳng vào ria mép. – bobthecow

1

dựa trên những gợi ý từ ryber, tôi đã thêm một thư viện để xử lý này cũng bao gồm một số chú thích (tài liệu được cập nhật sắp tới)

0123.

Các vấn đề liên quan