Vấn đề là dấu gạch dưới sẽ thêm dấu chấm phẩy khi chuyển mẫu của bạn sang JavaScript. Vì vậy, một đơn giản switch
như thế này:
<% switch(x) { %>
<% case 11: %>
<button>
<% } %>
trở JavaScript mà trông như thế này:
switch(x) { ;
case 11: ;
// something to output '<button>' goes here
} ;
Nhưng một Javascript switch
cần phải chứa case
báo cáo và một tuyên bố rỗng (tức là ;
trong switch(x) { ;
) doesn không đủ điều kiện.
Tôi không thể nghĩ ra cách nào lành mạnh xung quanh vấn đề này vì vậy tôi muốn chỉ cần chuyển sang một if
và chuyển sang vấn đề thú vị hơn:
<% if(UserType === 13) { %>
<button id="schoolButton" value="schools" class="gridChooser k-textbox">Schools</button>
<% } else if(UserType === 12) { %>
<button id="teacherButton" value="teachers" class="gridChooser k-textbox">Teacher</button>
<% } else if(UserType === 8) { %>
<button id="classButton" value="classes" class="gridChooser k-textbox">Classes</button>
<button id="testButton" value="tests" class="gridChooser k-textbox">Test</button>
<% } %>
Bạn cũng có thể tắt nó trong ra ngoài và sử dụng print
:
<% switch(UserType) {
case 13:
print('<button id="schoolButton" ...');
...
} %>
nhưng đó là một chút xấu xí (IMHO). Xem chi tiết _.template
documentation.
Lưu ý rằng dấu chấm phẩy lừa đảo này cũng là lý do tại sao if
của bạn phải bao gồm niềng răng trong một mẫu gạch thậm chí nếu Javascript không đòi hỏi họ. Vì vậy, điều này sẽ không làm việc:
<% if(pancakes) %>
<%= pancakes %>
nhưng điều này sẽ:
<% if(pancakes) { %>
<%= pancakes %>
<% } %>
Cùng áp dụng cho vòng lặp.
Nguồn
2013-04-11 17:16:28
Câu trả lời tuyệt vời. Cảm ơn bạn đã giải thích lý do giải pháp dự kiến không hoạt động. –
@DanM: Cảm ơn. Tôi phải đi đào sâu trong phiên bản biên dịch của mẫu nên tôi nghĩ tôi nên chia sẻ những gì tôi tìm thấy: nếu tôi không thể giải thích thì tôi không hiểu, nếu tôi không hiểu thì tôi không hiểu cảm thấy trả lời đúng. –