OnClick в _.template lodash

У меня есть _.template, где некоторые html отображаются с помощью кнопки. Теперь я хочу вызвать функцию onClick

В моей _.template

<span>\
 \
 </span>\

do_search() но когда я запускаю код, я получаю исключение времени выполнения do_search() неопределенной или нулевой ссылки. Новый метод автоматически генерируется в блоке сценария файла [dynamic]. Как я могу привязать этот метод к использованию существующего? Я даже попробовал this.do_search()

1 ответ

Атрибут onClick() может использовать только методы из глобальной области (window):

function do_search() {
 alert('yey');
}

var str = '<span>\
 <button type="button" onclick="do_search()">\
 <span>Search</span></button>\
 </span>';
 
var compiled = _.template(str)({});

target.innerHTML = compiled;

Обычно обработчики событий прикрепляются к этим addEventListener() шаблонов с помощью addEventListener():

(function() {

 var str = '<span>\
 <button type="button">\
 <span>Search</span></button>\
 </span>';

 var compiled = _.template(str)({});

 demo.innerHTML = compiled;

 var searchBtn = document.querySelector('.search');

 function do_search() {
 alert('yey');
 }

 searchBtn.addEventListener('click', do_search);

})();

licensed under cc by-sa 3.0 with attribution.