2016-07-05 4 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 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'を代わりに使ってみてください。私はiFramesのために$ sceを使用していないので、私はあなたのコメントを使用する適切な方法がわからないので、ここで必要なものはどれかわかりません。 – jusopi

+0

はい、ありがとうございました! – Marco