2014-01-17 7 views
2

lodash.template()을 사용하여 html 코드를 만들고 싶지만 그 결과는 예상하지 못했습니다.lodash.template()에서 html 태그를 이스케이프 해제하려면 어떻게해야합니까?

var a = '<td>a</td>'; 
var expected = '<tr><td>a</td></tr>'; 
var actual = _.template('<tr><%- a %></tr>', {a: a}); 

console.log(actual); 
"<tr>&lt;td&gt;a&lt;/td&gt;</tr>" 

채워진 텍스트 a 결과로 탈출하고있다.

어떻게 결과를 expected으로 가져올 수 있습니까?

options.escape으로 설정할 수 있지만이 옵션을 사용하는 방법은 알 수 없습니다.

감사합니다.

답변

4

HTML을 생성하는 방법은 보안을 위해 권장되지 않지만 <%= a %> 또는 print을 문서화 된대로 사용할 수 있습니다.

var actual = _.template('<tr><% print(a) %></tr>', {a: a}); 
// or 
var actual = _.template('<tr><%= a %></tr>', {a: a});