2016-06-24 4 views
1

Я должен следовать директиве, что я пытаюсь установить прослушиватель onload для тега img. Внутри этой функции ссылок я программно генерирую img src.img load event not firing

angular.module('test', []) 
.directive('imgTest', function() { 
    return { 
    restrict: 'A', 
    template: '<img ng-src="{{imgSrc}}"></img>', 
     link: function(scope, elem) { 
     elem.on('load', function() { 
     console.log('image loaded'); 
     }); 

     scope.imgSrc = "someurl?token=" + getAccessToken(); 
    } 
    }; 
}); 

Однако функция onload не срабатывает. Прощай, я уверен, что я делаю что-то действительно глупо :)

ответ

1

"эль" не образ. Если вы используете директиву, как в следующем,

<div img-test /> 

элем является «ДИВ» вместо изображения

+0

Это правильно, спасибо! – lostintranslation

0

elem.on('load') является слушателем событий в стиле jQuery. Не похоже, что у вас есть объект jQuery, так как elem - он пришел прямо из Angular. Так что попробуйте:

$(elem).on('load', function() {}) 

или

elem.addEventListener('load', function() {}); 
+0

Благодаря @Harangue. Все еще не получается событие загрузки. Мое изображение действительно загружается, так как я вижу его на странице. – lostintranslation

+0

@lostintranslation Я также уверен, что вы должны установить «src» перед загрузчиком. Не уверен, что это изменит ситуацию. – Harangue

+0

всегда считал, что лучше всего настроить слушателя, прежде чем запускать событие, которое могло бы вызвать слушателя. В любом случае, загрузка даже не срабатывает. – lostintranslation