我正在使用AngularJS 1加载.json文件,其中包含我正在使用的iframe的来源(请参阅下面的控制器):
myApp.controller('iFrames', ['$scope', '$http', function($scope, $http){
console.log("ENTERING LOADING IFRAME");
$http.post('../json/iframes.json').success(function(data){
console.log("LOADING SUCCESSFULL");
$scope.iframes = data;
});
console.log("LEAVING LOADING IFRAME");
}]);
问题是我的页面上根本没有显示iframe,知道json文件已正确加载。
你需要知道json文件中的url都是https,我认为这就是造成这个问题的原因。
在html中我有:
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-6" ng-controller="iFrames">
<div class="panel">
<div class="panel-body">
<h3 class="text-center" style="color:white"><div id="changeStat"><span data-i18n="mainTranslation.user.house.consommation"></span></div></h3>
<div id="statRealTime" ng-repeat="iframe in iframes" >
<iframe ng-src="{{(iframe.src)}}" width="420" height="75" frameborder="0"></iframe>
</div>
<div id="statHistory" style="display: none" ng-repeat="iframe in iframes" >
<iframe ng-src="{{(iframe.srcHist)}}" width="420" height="75" frameborder="0"></iframe>
</div>
</div>
</div>
</div>
我收到的错误是网址不安全。
"Error: [$interpolate:interr] http://errors.angularjs.org/1.5.0/$interpolate/interr?p0=%7B%7B(iframe.srcHist)%7D%7D&p1=Error%3A%20%5B%24sce%3Ainsecurl%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.5.0%2F%24sce%2Finsecurl%3Fp0%3Dhttps%253A%252F%252F.......
我的文件在本地,我也试图将它放在远程服务器上,但仍然是同样的问题。
我会感激一些帮助...
答案 0 :(得分:1)
您需要使用$sce:
myApp.controller('iFrames', ['$scope', '$http', '$sce', function($scope, $http, $sce){
console.log("ENTERING LOADING IFRAME");
$http.post('../json/iframes.json').success(function(data){
console.log("LOADING SUCCESSFULL");
$scope.iframes = data;
for(var i = 0; i < $scope.iframes.length; i++){
$scope.iframes[i].srcHist = $sce.trustAsUrl($scope.iframes[i].srcHist)
}
});
console.log("LEAVING LOADING IFRAME");
}]);
答案 1 :(得分:1)
@Websirnik的答案大部分都是正确的,但我没有使用$sce.trustAsUrl
(它产生同样的错误),我尝试使用$sce.trustAsResourceUrl
并且它有效:
myApp.controller('iFrames', ['$scope', '$http', '$sce', function($scope, $http, $sce){
console.log("ENTERING LOADING IFRAME");
$http.post('../json/iframes.json').success(function(data){
console.log("LOADING SUCCESSFULL");
$scope.iframes = data;
for(var i = 0; i < $scope.iframes.length; i++){
$scope.iframes[i].srcHist = $sce.trustAsResourceUrl($scope.iframes[i].srcHist)
}
});
console.log("LEAVING LOADING IFRAME");
}]);