2012-12-19 4 views
4

내가 밑줄 서식 파일을 구문 분석 오류가있는 경우, 내가 말하는 오류가 계속와 :밑줄 템플릿 : 오류 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 
      {[ }); ]} 
옥를 사용 :

여기 Uncaught SyntaxError: Unexpected token else

는 아래의 템플릿입니다

문제는 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 + = ''; else {html + = 'inside else' ', 이는 분명히 유효한 JS가 아닙니다. – freejosh

+0

설명 주셔서 감사합니다 –