Как сделать if/then в underscore.js, похожем на усы?

Я использую underscore.js для шаблонов HTML, настроенный на использование синтаксиса усов, например: {{ }}

У меня есть этот код:

 <% if (typeof(date) != "undefined") { %>
  <span class="date"><%= date %></span>
 <% } %>

Как я могу перевести его в шаблон в стиле усов underscore.js, используя {{ }}?


person 3logy    schedule 24.01.2012    source источник
comment
Вы должны арендовать логику за пределами шаблона и отображать .date только в том случае, если typeof(date) != undefined в вашем представлении, шаблоны следует рассматривать только как сквозные.   -  person Damen TheSifter    schedule 25.01.2012


Ответы (4)


Я использую:

    _.templateSettings = {
      evaluate : /\{\[([\s\S]+?)\]\}/g,
      interpolate : /\{\{([\s\S]+?)\}\}/g
    };

Тогда вместо <%= … %> используйте {{ … }} и вместо <% … %> используйте {[ … ]}

person ggozad    schedule 05.02.2012
comment
почему использовали ([\s\S]+?) вместо (.+?) как в примере из документации underscore.js? какой-либо причине? - person simon; 22.01.2013
comment
@simon [\s\S] — это распространенный шаблон регулярного выражения, который будет соответствовать ЛЮБОМУ символу. . в регулярном выражении не соответствует символам новой строки. Движок регулярных выражений, доступный для JavaScript, не позволяет сделать так, чтобы . соответствовало новым строкам (как вы можете с другими механизмами регулярных выражений). Дополнительная информация: regular-expressions.info/dot.html. - person Bryan Downing; 09.06.2013

http://handlebarsjs.com/ — это усы с логикой, партиалами, помощниками и контекстом. Он также может быть предварительно скомпилирован. Обязательно ИМХО.

person charlysisto    schedule 07.02.2012

просто включите этот код после добавления подчеркивания

_.templateSettings = {
    interpolate:/\{\{(.+?)\}\}/g
};
person Expert    schedule 04.02.2012
comment
Уже сделано! мой вопрос касается использования if... then... else! Спасибо - person 3logy; 04.02.2012

person    schedule
comment
это действительно не работает для меня! TheSifter работает вне Шаблона! но я все еще ищу метод работы внутреннего шаблона!! Все равно спасибо - person 3logy; 03.02.2012