Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't load URL into iframe with angularJS

Using AngularJS, Im trying to load the "myLink" URL address to iframe in another html. data.No is the id that i pull from another place and works fine (get the Id that i need for the url)

in the controller - "TransactionsCtrl":

$scope.myLink = "http://"the real url"+ data.No +"&file="+ data.No +"&contract_id="+ data.No;
console.log($scope.myLink);

in the HTML :

<div ng-controller= "TransactionsCtrl">
    <iframe ng-src="{{myLink}}"></iframe>
</div>

and all i get is this :

Error: [$interpolate:interr] Can't interpolate: {{myLink}}
Error: [$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy.  URL

when i hard coded the url its working fine.

like image 892
Elad Noty Avatar asked Nov 18 '14 08:11

Elad Noty


2 Answers

In the controller you should use:

   $scope.myLink =  $sce.trustAsResourceUrl(myUrl)
like image 59
Michael Avatar answered Oct 16 '22 14:10

Michael


It works for me : you can write this in js code as a function

$scope.trustSrc = function(src) {
  return $sce.trustAsResourceUrl(src);
}
$scope.iframe = {src:"http://www.youtube.com/embed/Lx7ycjC8qjE"};

and use it in your view :

 <iframe ng-src="{{trustSrc(iframe.src)}}"></iframe>

or you can write it as a filter like :

.filter('trusted', function($sce){
return function(url) {
    return $sce.trustAsResourceUrl(url);
};

})

and use it in view :

 <iframe ng-src="{{iframe.src | trusted}}"></iframe>
like image 8
saghar.fadaei Avatar answered Oct 16 '22 13:10

saghar.fadaei