Используя представление backbonejs, как лучше всего подключить событие "onload" к тегу изображения?

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

Любые предложения для этого?

Ответ 1

Обработка событий на основе базы данных основана на 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/