2012-12-19 69 views
4

我有一個錯誤解析下劃線的模板,我不斷收到一個錯誤說:下劃線模板:錯誤的if else語句

Uncaught SyntaxError: Unexpected token else

這裏是下面的模板:用玉

script#viewLinksTemplate(type="text/template") 
    table.table.table-condensed.table-striped 
     caption Available links 
     thead 
      tr 
       td link id 
       td Name 
       td View 
       td Edit 
       td Remove 
     tbody 
      {[ _.each(routes, function(route) { ]} 

      tr 
       td {{ route._id }} 
       {[ if (typeof route.name !== 'undefined') { ]} 
       td {{ route.name }} 
       {[ } ]} 
       {[ else { ]} 
       td {{ route.stations.start.name }} - {{ route.stations.end.name }} 
       {[ }; ]} 
       td 
        a.btn.btn-primary(href="/route") View Route 
       td 
        a.btn.btn-warning Edit Route 
       td 
        a.btn.btn-danger Delete Route 
      {[ }); ]} 

問題似乎在if/else語句中。當我完全刪除它時,模板上留下的部分被渲染。

所以,我缺少語法的東西?我所有的其他模板都有javascript,並且正確顯示,除了這個與if/else之外。

感謝

回答

9

這是因爲if語句的結束和else是在兩個不同的評估標籤。將它們合併爲一個更換:

{[ } ]} 
{[ else { ]} 

有:

{[ } else { ]} 
+0

謝謝,這工作。任何理由爲什麼它不工作時,語句是在不同的標籤?這可能是一個玉器問題嗎?我會嘗試將模板更改爲HTML並查看是否重現錯誤。 –

+2

Underscore如何構建模板是一個問題。它基本上構建了一個字符串「eval」,並且在該生成的代碼中生成一個包含HTML輸出的字符串。當它遇到JS來評估它關閉HTML時,插入你的JS並再次打開HTML。當你有這樣的單獨標籤時,構建的字符串看起來像是'if(condition){html + ='html inside if'; } html + ='';否則{html + ='inside else'',這顯然是無效的JS。 – freejosh

+0

感謝您的解釋 –