2013-04-24 117 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