Ответ 1
попробуйте определить функцию в контроллере как:
window.uploadDone=function(){
/* have access to $scope here*/
}
У меня есть iframe, работающий с базовым JavaScript:
<iframe id="upload_iframe" name="upload_iframe" onLoad="uploadDone();"></iframe>
Что вызывает метод uploadDone();
при загрузке содержимого iframe.
Как мне сделать то же самое в Angular?. Я хочу вызвать функцию на контроллере, когда загружается iframe, но я еще не видел ng-onload
.
попробуйте определить функцию в контроллере как:
window.uploadDone=function(){
/* have access to $scope here*/
}
Комментирование вопроса на год. Для случаев, когда существует более 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>
Для всех, кто пришел сюда, плагин ng-onload является идеальным решением этой проблемы. Он не загрязняет глобальное пространство имен и не требует создания одноразовых директив, когда все, что вам нужно, - это вызвать простую функцию области.