편집 : 해결책을 찾았습니다 다른 사용자가 솔루션을 추가했지만 편집 했으므로 다른 사용자를 위해 본 내용을 추가하고 있습니다. :jquery : HTML 인코딩 엔티티 텍스트가없는 파일에서 HTML을로드 하시겠습니까? (핸들 모음 부분 템플릿과 함께 사용하기위한 '{{>'와 같은)
원본 템플릿은 <div>
이며 text/html로 처리되었습니다. 나는이 <script>
로 <div>
를 교체 한 모든 것이 예상대로 작동합니다
<script id="template-id" type="text/x-handlebars-template">
원래 게시
내가 별도의 HTML 파일에서 기록 된 모든 내 핸들 바 템플릿을 가지고있다. 지금까지 나는 문제없이 템플릿의 소스를로드를 확장하려면 다음을 사용했습니다 :
$.get(path,
function(templates, textStatus, jqXhr) {
var source = $(templates).filter(templateId).html();
var template = Handlebars.compile(source);
/* ... */
source
는 템플릿 코드가 포함되어 있습니다. 간단한 템플릿으로 아름답게 작동합니다. 심지어 부분을 사용하여 HTML 엔티티에 속성을 추가하기 시작했습니다.
<div class="pull-left label label-default tracking-item-data pointable"
item-id="{{ItemId}}"
data-id="{{Id}}"
title="{{> tooltip}}">
{{#if ExternalId}}{{ExternalId}}{{else}}Ignored{{/if}}
</div>
잘 작동합니다.
그러나 지금은 (속성이 아닌) 엔티티 텍스트에 부분을 추가하고 있습니다.
<ul class="list-unstyled list-inline">
{{#Data}}
<li title="{{> tooltip}}">{{> datalabel}}</li>
{{/Data}}
</ul>
참고 일부이든 {{> datalabel}}
가 {{> datalabel}}
로 인코딩 된 방법 : 위의 내 자바 스크립트에서 source
로드, 대신 적절한 핸들 바 부분 구문을 사용하여 기대 값이 포함 된 경우
<ul class="list-unstyled list-inline">
{{#Data}}
<li title="{{> tooltip}}">{{> datalabel}}</li>
{{/Data}}
</ul>
: 여기에 템플릿의 .html()
방법에서 읽을 때.
엔티티 텍스트의 부분을 인코딩하는 것처럼 보입니다. 이것은 내 Handlebars 메소드를 붕괴시킵니다. 로드 할 때 html이 인코딩되지 않도록하려면 어떻게해야합니까?
이것은 실제로 답변이 아니며 jquery/javascript의 bandaid에 대한 것입니다. 원래 문제가 왜 시작되고 어떻게 피할 수 있는지에 대한 이유가 있다면 궁금합니다. – Shamster
핸들 막대 템플릿은 HTML이 아닌 텍스트입니다. 왜'$ (templates) .filter (templateId) .text()'를 사용하지 않으시겠습니까? – Tomalak
그래, 그거야! – Shamster