Подтвердить что ты не робот

Angular, функция onLoad на iFrame

У меня есть iframe, работающий с базовым JavaScript:

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

Что вызывает метод uploadDone(); при загрузке содержимого iframe.

Как мне сделать то же самое в Angular?. Я хочу вызвать функцию на контроллере, когда загружается iframe, но я еще не видел ng-onload.

4b9b3361

Ответ 1

попробуйте определить функцию в контроллере как:

window.uploadDone=function(){
  /* have access to $scope here*/
}

Ответ 2

Комментирование вопроса на год. Для случаев, когда существует более 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
    }
}]);

DOM

<div ng-controller="MyController">
    <iframe iframe-onload="iframeLoadedCallBack()" src="..."></iframe>
</div>

Ответ 3

Для всех, кто пришел сюда, плагин ng-onload является идеальным решением этой проблемы. Он не загрязняет глобальное пространство имен и не требует создания одноразовых директив, когда все, что вам нужно, - это вызвать простую функцию области.