2013-04-24 118 views
0

我需要在我的下划线模板中放置一些UI逻辑,但我很难得到语法。我在ASP.Net MVC .aspx视图中使用模板,因此必须更改模板设置才能使用{%=%},{% - %}和{%%}。在Underscore.js模板中使用for循环和if语句?

我想在表格行内使用模型属性“SortOrderCount”和“CurrSortOrder”生成一个选择列表。

这是我迄今为止,但它出错,我在我的for循环得到输出为字面“我”字符。语法太可怕了......大声笑

<td>{% if (CurrSortOrder) { %} 
       <select> 
        {% for (var i = 1; i <= {%= SortOrderCount %}; i++) { %} 
         <option value="{%= i %}" {%= i == CurrSortOrder ?  
           selected="selected" : "" %}>{%= i %}</option> 
        {% } %} 
       </select> 
     {% } %} 
    </td> 

编辑 - 这是它现在与西蒙的代码。

<option value="1" {%="(i" =="CurrSortOrder)" ?="" 'selected="selected" ''="" :="" ""="" %}="">1</option> 
+0

然后嵌套的'{%= SortOrderCount%}'如果你想在你的模板逻辑你真的可能要考虑的不是下划线的模板函数的东西更厉害一点看起来我错了 – Bergi 2013-04-24 21:11:41

+0

(其是,设计,相当小)。我建议看看小胡子或把手;两者都非常受欢迎,而且比'_.template'强大得多。 – machineghost 2013-04-24 22:57:01

回答

2

记住字符串仍在{% %}之间的模板中的字符串。你有一些非转义的字符串。

此外,您不能嵌套模板标签。需要一些清理:

<td>{% if (CurrSortOrder) { %} 
      <select> 
       {% for (var i = 1; i <= SortOrderCount; i++) { %} 
        <option value="{%= i %}" {%= (i == CurrSortOrder) ?  
          'selected="selected"'' : "" %}>{%= i %}</option> 
       {% } %} 
      </select> 
{% } %}</td> 
+0

谢谢,几乎解决了这个问题。唯一认为不起作用的是选定的项目。标签的HTML为 Smith 2013-04-24 20:53:11

+0

请再阅读您刚在此处发布的代码。这是毫无意义的...... – 2013-04-24 20:54:49

+0

所选项目不起作用,因为它显示源HTML中的实际第三状态。阅读我原来的帖子的底部。 – Smith 2013-04-24 21:03:11