a11*_*uru 14 underscore.js underscore.js-templating
我无法在我的下划线模板中使用简单的switch语句.它使用名为UserType的变量的值,我通过显示<%= UserType%>来检查它.
代码即将出现:
<% switch(UserType) { %>
<% case 13: %>
<button id="schoolButton" value="schools" class="gridChooser k-textbox">Schools</button>
<% case 12: %>
<button id="teacherButton" value="teachers" class="gridChooser k-textbox">Teacher</button>
<% case 8: %>
<button id="classButton" value="classes" class="gridChooser k-textbox">Classes</button>
<button id="testButton" value="tests" class="gridChooser k-textbox">Test</button>
<% } %>
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢 - 谢谢.
mu *_*ort 22
问题是,在将模板转换为JavaScript时,Underscore会添加分号终止符.所以,这样简单switch:
<% switch(x) { %>
<% case 11: %>
<button>
<% } %>
Run Code Online (Sandbox Code Playgroud)
成为看起来像这样的JavaScript:
switch(x) { ;
case 11: ;
// something to output '<button>' goes here
} ;
Run Code Online (Sandbox Code Playgroud)
但JavaScript switch需要包含case语句,而空语句(即;in switch(x) { ;)不符合条件.
我想不出有任何理智的解决这个问题的方法,所以我只是转而选择if并继续讨论更多有趣的问题:
<% 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>
<% } %>
Run Code Online (Sandbox Code Playgroud)
你也可以把它翻到里面并使用print:
<% switch(UserType) {
case 13:
print('<button id="schoolButton" ...');
...
} %>
Run Code Online (Sandbox Code Playgroud)
但那有点难看(恕我直言).有关详细信息,请参阅_.template文档
请注意,这个分号技巧也是为什么你的ifs必须在Underscore模板中包含大括号,即使JavaScript不需要它们.所以这不起作用:
<% if(pancakes) %>
<%= pancakes %>
Run Code Online (Sandbox Code Playgroud)
但这会:
<% if(pancakes) { %>
<%= pancakes %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这同样适用于循环.
Cai*_*ifa 12
你可以做:
<% switch(UserType) { case 13: %>
<button id="schoolButton" value="schools" class="gridChooser k-textbox">Schools</button>
<% break; case 12: %>
<button id="teacherButton" value="teachers" class="gridChooser k-textbox">Teacher</button>
<% break; case 8: %>
<button id="classButton" value="classes" class="gridChooser k-textbox">Classes</button>
<button id="testButton" value="tests" class="gridChooser k-textbox">Test</button>
<% break; } %>
Run Code Online (Sandbox Code Playgroud)
这不是一个"舒适"的解决方案,但都不是错的.只是工作.