Вызов функции 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);
});
Примечание. Хотя технически возможно выполнить код без рендеринга внутри помощника, это считается плохой практикой и его следует избегать, если это вообще возможно.
Ответ 3
Чтобы справиться с manupulations данных в шаблоне handlebars, вам нужно добавить помощника и вызвать этот помощник в шаблоне.
Подробнее здесь...
http://blog.teamtreehouse.com/handlebars-js-part-2-partials-and-helpers