Использование помощников Handlebars.js для создания активных элементов с помощью jQuery? - PullRequest
8 голосов
/ 05 ноября 2011

Возможно ли в хелпере Handlebars.js создавать элементы с помощью jQuery и прикреплять к ним обработчик событий? Я хотел бы иметь возможность создавать активные элементы с помощью помощников.

Пример:

Handlebars.registerHelper("button", function(title) {
    var button = $('<button>').text(title);
    button.click(function() {
        alert("Button " + title + " clicked.");
    });
    return $('<div>').append(button).html();
});

В шаблоне руля я создаю кнопку следующим образом:

{{{button "Click Me!"}}}

Я понимаю, что это не может работать, поскольку функция jQuery html () "удаляет" обработчик событий ... но просто возвращая кнопку , очевидно, тоже не работает Помощники руля должны иметь возможность возвращать DOM-узлы, но это невозможно, верно? Я пытался вернуть button.get () , но безуспешно.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 05 февраля 2012

Что вы можете сделать, это создать функцию за пределами registerHelper, которая будет вызываться onClick.Таким образом, код для этого будет выглядеть так:

Handlebars.registerHelper("button", function (text) {
    var button = $('<button></button>').text(text).attr('onclick', 'button_clickEvent()');
    return $('<div></div>').append(button).html();
});

var button_clickEvent = function () {
    alert("Button " + $(this).text() + " clicked.");
};
0 голосов
/ 22 декабря 2015

Теперь, когда MutationObserver является более поддерживаемым и webcomponents-lite является приемлемым полифилом для него, вы можете использовать его, чтобы получить элементы, созданные изШаблоны руля.См. мой ответ на более свежий вопрос о том же.

...