2016-07-05 19 views
2

我試圖在iframe中顯示視頻,但即使我正在獲取正確的嵌入鏈接,也沒有顯示任何內容。我試圖通過顯示鏈接並顯示正確的鏈接來進行測試,並且當我對iframe的相同鏈接進行硬編碼時,視頻會顯示出來,但是當我擁有這樣的內容時,iframe中不會顯示任何內容:

<ion-item ng-repeat="article in articles" class="item-light"> 
    <img ng-show="article.external_media.length == 0 || article.external_media.url == ''" src="http://coop.app/imagecache/cover/{{article.cover_image}}"> 
    <iframe ng-show="article.external_media.length > 0 && article.external_media.url != ''" src="{{article.external_media[0].url}}"></iframe> 
</ion-item> 

更新

因爲我需要注入$ SCE依賴我不知道如何將其應用到我的控制器的所有可能的聯繫。該功能將如何看待?

這是我的控制器:

.controller('FrontPageController', function($scope, ArticleService, $state) { 
    ArticleService.all().then(function(data){ 
    $scope.articles = data; 
}) 
+1

這是一個'$ sce'問題,你不能把src設置爲一個不可信值,所以你應該注入'$ sce'並相信這個特定信息是有效的資源 – maurycy

+0

可能的重複[如何從一個iframe設置iframe src屬性變量在AngularJS](http://stackoverflow.com/questions/20045150/how-to-set-an-iframe-src-attribute-from-a-variable-in-angularjs) – maurycy

回答

2

Since I need to inject $sce dependency I wonder how to apply it to all the possible links in my controller. How would that function look?

我推薦的過濾器這一點。

.filter('safeUrl', [ 
    '$sce' 
    function($sce){ 
     return function(url){ 
      //not sure which one you need here 
      return $sce.trustAsUrl(url) 
     } 
    } 
]) 

在HTML

<iframe src="{{article.external_media[0].url | safeUrl}}"> 

我主張在控制器方法過濾器只在我喜歡讓我的控制器,非常輕巧。如果有需要解釋爲,我使用過濾器。

+0

我試過你的建議,但我得到ionic.bundle.js:26794錯誤:[$ interpolate:interr]無法插值:{{article.external_media [0] .url | safeUrl}} 錯誤:[$ sce:insecurl] $ sceDelegate策略不允許從url阻止加載資源。 – Marco

+0

請嘗試使用'$ sce.trustAsResourceUrl'來代替?我沒有使用$ sce作爲iFrames,所以我不知道哪個是正確的方法來使用ergo我的評論'/ /不知道你需要哪一個這裏' – jusopi

+0

是的,就是這樣,謝謝! – Marco