Angular, onLoad function on an iFrame

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="https://stackoverflow.com/questions/15882326/..."></iframe>
</div>

Leave a Comment