在Underscore.js模板中使用for循环和if语句?

时间:2013-04-24 20:31:40

标签: backbone.js underscore.js

我需要在我的下划线模板中加入一些UI逻辑,但我很难将语法缩小。我在ASP.Net MVC .aspx视图中使用该模板,因此我必须更改模板设置以使用{%=%},{% - %}和{%%}。

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

这是我到目前为止所遇到的但它出错并且我的for循环中的i被输出为文字“i”字符。语法太可怕了......大声笑

  <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> 

1 个答案:

答案 0 :(得分:2)

请记住字符串仍然是{% %}之间模板中的字符串。那里有一些未转义的字符串。

此外,您无法嵌套模板标签。需要进行一些清理:

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