2016-06-24 8 views
1

imgタグのonloadリスナーを設定しようとする指示に従わなければなりません。そのリンク関数の中で、私はプログラムでimg srcを生成します。imgのロードイベントが起動しない

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

"elemは" 画像ではありません。あなたは、次のようなあなたのディレクティブを使用している場合は、

<div img-test /> 

elemは、代わりに画像

+0

のような属性ベースのディレクティブに切り替える方法はありますか、これは正解です、ありがとう! – lostintranslation

0

elem.on('load')は、jQueryスタイルのイベントリスナーです。 elemというjQueryオブジェクトがあるようには見えません。それはAngularからまっすぐに来ました。だから、試してみてください。

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

または

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

おかげ@Harangueの「DIV」です。まだロードイベントを取得していません。私のイメージは本当に私がページにそれを見ることができるように読み込まれています。 – lostintranslation

+0

@lostintranslationロードリスナーの前に "src"を設定するはずです。それが違いを生むかどうかは分かりません。 – Harangue

+0

は、リスナーを起動させる可能性のあるイベントをトリガーする前に、リスナーをセットアップすることがベストプラクティスであると常に考えていました。いずれにしても、負荷はまだ発火していません。 – lostintranslation

関連する問題