强调模板:无法获取开关工作(Underscore templating: Can't get

2019-08-21 22:05发布

我不能让一个简单的switch语句中我下划线模板工作。 它的使用,我已经检查通过用<(%)=用户类型%>显示它存在的变量称为的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> 
<% } %>

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

Answer 1:

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

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

成为JavaScript代码如下所示:

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

但一个JavaScript switch需要包含case语句和空语句(即;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在一个下划线模板小号必须包括括号即使JavaScript不要求他们。 所以这是行不通的:

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

但这种意愿:

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

这同样适用于循环。



Answer 2:

你可以做:

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

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



文章来源: Underscore templating: Can't get switch to work