2017-02-01 16 views
0

Возможно ли напечатать переменную в шаблоне подчеркивания во время оценки типа.Печать переменных в шаблоне Underscore trernary

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

Это дает мне ошибку Неожиданного идентификатора. Я пробовал с различными выделениями вокруг второго %>, но он просто печатает буквально. Я также попытался использовать псевдоним print(), чтобы компилятор не смущался повторением %>, но не повезло. Есть ли способ сделать это в тройной форме?

ответ

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 обычно строго числовой, то лучше всего использовать encodeURIComponent в любом случае, когда вы создаете URL. Исчезновение данных - это хорошая привычка.