2016-03-25 22 views
0

(aşağıda benim denetleyicisi bakınız) json dosyasından onun src yüklerken iframe gösterilmiyor:angularjs - Ben kullanıyorum iframe'lerden kaynaklarıyla bir .json dosyasını yüklemek için angularjs 1 kullanıyorum

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"); 
}]); 

Sorun, iframe'lerin sayfamda hiç gösterilmemesi, json dosyasının doğru şekilde yüklendiğinin bilinmesidir.

Json dosyasındaki URL'lerin hepsinin https içinde olduğunu bilmeniz gerekir, bunun burada soruna neden olduğunu düşünüyorum. html olarak

Ben: Ben bir hata alıyorum

<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> 

url nasılsa güvensiz olmasıdır.

"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....... 

Dosyam yereldir, ayrıca uzak bir sunucuya koymaya çalıştım ama yine de aynı sorun. Biraz yardım takdir ediyorum

...

+0

Bu hata tarafından oluşturulan bağlantıya tıklayın ... açısal hata site bir açıklama sağlayacaktır tirme. Veya daha ayrıntılı hata ve yığın iz çıktı için açısal tam geliştirme sürümünü kullanın – charlietfl

cevap

1

üreten tuttu bunun çoğu sağ, ancak bunun yerine $sce.trustAsUrl kullanmanın oldu @Websirnik cevabı (aynı hata), ben $sce.trustAsResourceUrl kullanarak denedim ve çalışır:

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"); 
}]); 
1

Sen kullanmaya gerek $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"); 
}]); 
+0

Teşekkür ederim! Benim günümü kurtardın :) – Lotus91