2013-01-24 3 views
1

나는 genshi 템플릿 안에 콧수염/핸들 바 템플릿을 렌더링하고 싶습니다. Genshi는 콧수염 태그 때문에 TemplateSyntaxError를 발생시키는 것으로 보입니다. here을 기록으로Genshi에서 자바 스크립트 템플릿을 렌더링하는 방법은 무엇입니까?

나도 내부와 외부 <script>, CDATA 태그를 넣어 시도했다 : 나는 $('#some-template').html() 않기 때문에

<script id="some-template" type="text/x-mustache-template"> 
    <![CDATA[ 
    ... my template here ... 
    ]]> 
</script> 

는, 핸들 바는 바로 HTML의 나머지와 함께 CDATA 태그를 렌더링하는 결과를 엉망으로 만든다.

<![CDATA[ 
<script id="some-template" type="text/x-mustache-template"> 
    ... my template here ... 
</script> 
]]> 

이렇게하면 브라우저에서 첫 번째 <script> 태그를 주석으로 처리합니다.

<!-- -->으로 CDATA에 주석을 추가하면 오류가 발생하고 /* */의 스크립트 내에서 핸들 바가 그대로 인쇄됩니다.

Genshi에게 템플릿의 덩어리를 구문 분석하지 않도록 알리는 방법이 있습니까?

감사합니다.

+1

가 처음처럼 포장까지 종료 (이것은 본질적으로 // <![CDATA[ 및 자바 스크립트 스크립트 // ]]>를 사용하는 것과 같은 속임수입니다.)

<script id="some-template" type="text/x-mustache-template"> {{! <![CDATA[ }} ... my template here ... {{! ]]> }} </script> 

을 예를 들어'Handlebars.compile ($ (selector) .html(). replace (/ /, ''))'를 사용하면 이상하지 않다. –

답변

1

도움이 될지 확실하지 않지만 유사한 문제가 발생했습니다.

XML 파서를 통해 실행되는 마크 업 덩어리가 있습니다.이 태그는 스크립트로 나중에 컴파일 될 DOM에 핸들 막대 템플릿을 추가합니다.

XML 파서를 지나서 핸들 바 템플릿을 얻으려면 CDATA 블록으로 둘러 쌀 필요가 있었지만 비슷한 문제가 발생했습니다. 스크립트 태그 안에 CDATA를 넣으면 템플릿 마크 업의 첫 번째 비트가 주석에서 삼킨 것입니다. 외부에 배치하면 전체 템플릿에 주석이 달리고 스크립트를 호출하여 컴파일 할 수 없습니다. 그렇지 않으면 나는를 얻고 있었다,

<div id="contentChunk"> 
    <div id="blah" class="foo"> 
     Some vanilla HTML being added. 
    </div> 
    <script id="hbTemplate" type="text/x-handlebars-template"> 
     <![CDATA[ 
     <!-- blocker comment: first html node of handlebars script gets swallowed. --> 
     {{#each data.items}} 
     <div id="item{{id}}">{{{name}}}</div> 
     {{/each}} 
     <!-- ]]> --> 
    </script> 
</div> 

가 나는 또한 의견에 후행 CDATA 가까운 태그를 포장 :

나는과 같이, 섭취하기가 불필요한 방패로 HTML 주석을 삽입하여 주위에 얻을 수있었습니다 리터럴]]> 렌더링합니다.

+0

입력 해 주셔서 감사합니다. 만약 내가 올바르게 기억한다면 저 역시 그 일이 일어났습니다. 그래서 저는 템플릿을 컴파일하기 전에 CDATA 태그를 제거하게되었습니다. (질문에 대한 내 의견을 확인하십시오). –

1

당신은 콧수염 주석 내에서 CDATA 구분 기호를 넣어 수 :

+0

Bruno, 좋은 제안이지만 불행히도 (내 경우에는) 후행}}은