2016-07-05 73 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