15

我无法在下划线模板中使用简单的 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> 
<% } %>

非常感谢任何帮助-谢谢。

4

2 回答 2

24

问题是下划线在将模板转换为 JavaScript 时会添加分号终止符。所以,一个简单的switch像这样:

<% switch(x) { %>
<% case 11: %>
    <button>
<% } %>

变成如下所示的 JavaScript:

switch(x) { ;
case 11: ;
    // something to output '<button>' goes here
} ;

但是 JavaScriptswitch需要包含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> 
<% } %>

你也可以把它翻过来并使用print

<% switch(UserType) {
   case 13:
       print('<button id="schoolButton" ...');
   ...
} %>

但这有点难看(恕我直言)。有关详细信息,请参阅_.template文档


请注意,这种分号技巧也是为什么您if的 s 必须在下划线模板中包含大括号的原因,即使 JavaScript 不需要它们。所以这行不通:

<% if(pancakes) %>
    <%= pancakes %>

但这将:

<% if(pancakes) { %>
    <%= pancakes %>
<% } %>

这同样适用于循环。

于 2013-04-11T17:16:28.073 回答
13

你可以做:

<% 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; } %>

这不是一个“舒适”的解决方案,但也没有错。只是工作。

于 2013-10-01T03:55:07.323 回答