2017-05-16 6 views
2

나는 템플릿 자체의 외부에서 일부 JavaScript 코드를 삽입하려는 html 템플릿이 있습니다. 내 템플릿 데이터 구조에서 나는 JS string 문자열 필드를 만들고 {{.JS}}로 부릅니다. 문제는 브라우저에서 모든 이스케이프되어 있습니다 :골란 : 탈출에서 html 템플릿을 중지

줄 바꿈은 \n

<>\u003c

"\u003e 템플릿의 내부 \"

같은 상징이다 미세 있습니다 있습니다. 내 JS 필드를 콘솔에 인쇄해도 문제가 없습니다. string 대신 template.HTML 유형을 사용하여 유사한 문제를 해결했습니다. 내 경우에는 전혀 작동하지 않습니다.

EDIT 1

실제 상황은

<script language="JavaScript"> 
    var options = { 
     {{.JS}} 
    }; 
</script> 
+1

문자열을 삽입하는 위치에 대한 추가 컨텍스트가 없으면 어떤 컨텍스트가 실행되는지 알 수 없습니다. https://godoc.org/html/template#hdr-Contexts – RayfenWindspear

+1

을 참조하십시오. 필요한 조치 일 것입니다. https://godoc.org/html/template#hdr-Typed_Strings (일명 설명서를 읽어보십시오!) – RayfenWindspear

+0

@RayfenWindspear 내 질문을 곧 업데이트 할 예정입니다. 귀하의 회신에 감사드립니다. – WORMrus

답변

6

어느 쪽과 같이 template.JS에 필드의 유형을 변경

func toJS(s string) template.JS { 
    return template.JS(s) 
} 

을 그리고 그와 함수를 등록 Funcs 방법을 사용하고 다음과 같이 템플릿에 사용하십시오.

{{toJS .JS}} 
3

template.JSJS의 유형을 설정하십시오입니다 :

import "html/template" 

type x struct { 
     JS template.JS 
} 

문서는 here를 찾을 수 있습니다.

type Tmpl struct { 
    // ... 
    JS template.JS 
} 

을 아니면 stringtemplate.JS 형과 같이 변환하는 간단한 함수 선언 :

+1

감사합니다. 하지만 그는 1 분 빠르기 때문에 @mkmkopriva의 대답을 선택해야합니다. 아직도 upvoted – WORMrus