Вызов функции Javascript из руля

Как вызвать функцию javascript внутри handlebar script? Причина: Я не смог сломать {{#each}} из руля. Поэтому мне нужно передать его в javascript и сделать логику.

Ответы

Ответ 1

Вы можете сделать это с помощью помощников;

Handlebars.registerHelper("printItems", function(items) {
  var html = "<ul>";
  items.forEach(function(entry) {
    html += "<li>" + entry + "</li>";
  });
  html += "</ul>";
  return html;
});

и в вашем шаблоне handlebars;

{{printItems items}}

Выше кода помещает ваши элементы в список.

Подробнее см. здесь. Перейдите в раздел помощников

Ответ 2

Handlebars - это минимальный соблазнительный язык для JavaScript, и поэтому он не позволит вам выполнять произвольный код из шаблона. Однако Handlebars предоставляет вам помощников, позволяющих выполнять предварительно определенный код над вашим шаблоном. Встроенные: each, unless, if и else.

Вы можете создать свои собственные помощники с помощью метода Handlebars.registerHelper. Вот простой пример, который форматирует номер телефона. Пока вы регистрируете помощника, прежде чем вы его вызываете, вы сможете использовать {{formatPhoneNumber phoneNumber}} в любом месте вашего кода.

Handlebars.registerHelper("formatPhoneNumber", function(phoneNumber) {
  phoneNumber = phoneNumber.toString();
  return "(" + phoneNumber.substr(0,3) + ") " + 
    phoneNumber.substr(3,3) + "-" + 
    phoneNumber.substr(6,4);
});

Примечание. Хотя технически возможно выполнить код без рендеринга внутри помощника, это считается плохой практикой и его следует избегать, если это вообще возможно.