54

このiframeは基本的なJavaScriptで動作しています:

<iframe id="upload_iframe" name="upload_iframe" onLoad="uploadDone();"></iframe>

uploadDone();iframe のコンテンツが読み込まれたときにメソッドをトリガーします。

Angular で同じことを行うにはどうすればよいですか?. iframe の読み込み時にコントローラーで関数を呼び出したいのですが、ng-onloadこれまでに見たことがありません。

4

5 に答える 5

119

1 年前の質問にコメントします。複数の iframe がある場合、「onload」イベントをバインドする必要がありました。私はこのアプローチをしました。

指令

APP.directive('iframeOnload', [function(){
return {
    scope: {
        callBack: '&iframeOnload'
    },
    link: function(scope, element, attrs){
        element.on('load', function(){
            return scope.callBack();
        })
    }
}}])

コントローラ

APP.controller('MyController', ['$scope', function($scope){

    $scope.iframeLoadedCallBack = function(){
        // do stuff
    }
}]);

ドム

<div ng-controller="MyController">
    <iframe iframe-onload="iframeLoadedCallBack()" src="..."></iframe>
</div>
于 2014-05-30T06:09:45.230 に答える
4

ここにたどり着いた人にとって、ng-onloadプラグインはこの問題に対する完璧な解決策です。グローバル名前空間を汚染することはなく、単純なスコープ関数を呼び出すだけでよい場合でも、1 回限りのディレクティブを作成する必要はありません。

于 2015-12-30T18:12:23.410 に答える