У меня возникли проблемы с привязкой обработчика событий к динамически сгенерированному элементу в представлении Chaplin, и я не могу понять, что происходит. Это кажется наиболее явной возможной реализации:Обработчик событий JS/Backbone/Chaplin не запускается
var MyView = Chaplin.View.extend({
/* using jQuery to bind the event because Chaplin.View.listen
and Chaplin.View.delegate aren't working... */
render: function() {
Chaplin.View.prototype.render.apply(this, arguments);
this.$('#the-button').click(function() { console.log('clicked'); });
console.log('breakpoint here');
}
});
В Chrome Dev Tools:
> this.$('#the-button').attr('unique-attr', 'blah');
< [ <button id="the-button" unique-attr="blah">Text</button>]
> this.$('#the-button').click()
clicked
< [ <button id="the-button" unique-attr="blah">Text</button>]
Возобновить приложение, убедитесь, что мы смотрим на тот же элемент:
> $('#the-button')
< [ <button id="the-button" unique-attr="blah">Text</button>]
> $('#the-button').click()
[ no output ]
< [ <button id="the-button" unique-attr="blah">Text</button>]
Может ли кто-нибудь объяснить, почему обработчик события onclick для кнопки запускается в области «рендеринга», но не запускается в глобальной области? Благодарю.