Angular, onLoad function on an iFrame

前端 未结 4 887
故里飘歌
故里飘歌 2020-11-28 06:16

I have this iframe working with basic JavaScript:


<         


        
相关标签:
4条回答
  • 2020-11-28 07:04

    Commenting on a year old question. For cases where there are more than 1 iframes, I needed to bind "onload" events on to. I did this approach.

    Directive

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

    Controller

    APP.controller('MyController', ['$scope', function($scope){
    
        $scope.iframeLoadedCallBack = function(){
            // do stuff
        }
    }]);
    

    DOM

    <div ng-controller="MyController">
        <iframe iframe-onload="iframeLoadedCallBack()" src="..."></iframe>
    </div>
    
    0 讨论(0)
  • 2020-11-28 07:11

    try defining the function within controller as:

    window.uploadDone=function(){
      /* have access to $scope here*/
    }
    
    0 讨论(0)
  • 2020-11-28 07:13

    For anyone using Angular 2+, It's simply:

    <iframe (load)="uploadDone()"></iframe>
    

    No global function, works with multiple iframe.

    0 讨论(0)
  • 2020-11-28 07:17

    For anyone ending up here, the ng-onload plugin is the perfect solution to this issue. It doesn't pollute the global namespace and doesn't require you to create one-off directives when all you want is to call a simple scope function.

    0 讨论(0)
提交回复
热议问题