2017-02-01 6 views
0

평가 중에 밑줄 템플릿에 변수를 인쇄 할 수 있습니까?밑줄 템플릿 내 변수 인쇄 삼각형

<a href="<%=data.active ? 'the/url' : 'another/url/<%='data.id'%>'%>">Link with printed parameter</a> 

예기치 않은 식별자 오류가 발생합니다. 나는 두 번째 주위에 다양한 excapings 시도했다 %>하지만 그냥 그대로 인쇄합니다. 또한 별칭을 사용하여 컴파일러가 %>을 반복하여 혼동하지 않도록 노력했지만 행운이 없습니다. 삼항 내에이 일을 할 수있는 방법이 있습니까?

답변

3

템플릿을 중첩하지 않으려 고 시도 할 때 문제없이 작동합니다.

var source = document.getElementById("testTemplate").innerHTML; 
 
var testTemplate = _.template(source); 
 

 
document.getElementById("target1").innerHTML = testTemplate({ 
 
    data: { 
 
    active: false, 
 
    id: 12345 
 
    } 
 
}); 
 

 
document.getElementById("target2").innerHTML = testTemplate({ 
 
    data: { 
 
    active: true, 
 
    id: 67890 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 

 
<script type="text/template" id="testTemplate"> 
 
    <a href="<%= data.active ? 'the/url' : 'another/url/' + encodeURIComponent(data.id) %>">Link with printed parameter</a> 
 
    <p>The URL is "<%= data.active ? 'the/url' : 'another/url/' + encodeURIComponent(data.id) %>".</p> 
 
    <hr> 
 
</script> 
 

 
<div id="target1"></div> 
 
<div id="target2"></div>

참고 : data.id 일반적으로 엄격하게 숫자 인 경우에도 사용자가 URL을 구축 할 때, 그냥 어쨌든 encodeURIComponent를 사용하는 것이 좋습니다. 데이터를 깨끗하게 이스케이프 처리하는 것은 좋은 습관입니다.