Используя представление backbonejs, каков наилучший способ прикрепить событие «onload» к тегу изображения? - PullRequest
11 голосов
/ 22 марта 2012

Я хочу прикрепить событие "onload" для изображения в представлении backbonejs.В настоящее время я включаю его в «events» как «load img»: «function», но он не срабатывает.

Есть предложения для этого?

1 Ответ

11 голосов
/ 23 марта 2012

Обработка событий Backbone основана на delegate и delegate может использоваться только с событиями, которые всплывают. Проблема в том, что события загрузки не всплывают; из спецификации HTML5 :

Если загрузка прошла успешно
Установите элемент img в полностью доступное состояние, обновите представление изображения соответствующим образом и запустите простое событие с именем load для элемента img.

А простое событие не всплывает:

Запуск простого события с именем e означает, что событие с именем e не всплывает (если не указано иное) [... ]

Так что вам придется вручную соединять обработчик с чем-то вроде этого:

render: function() {
    var self = this;
    this.$el.append(some_html_with_img_elements);
    this.$el.find('img').on('load', function() { self.img_loaded() });
    return this;
}

Демо: http://jsfiddle.net/ambiguous/c7wH2/

...