ng-src不会更新url参数更改时的iframe

时间:2016-07-21 11:43:45

标签: javascript angularjs iframe

我认为我有以下内容:

<iframe style="width: 100%;height: 240px;" scrolling="no" frameborder="0" ng-src="{{previewUrl}}">
</iframe>

我使用以下代码设置previewUrl

$scope.previewUrl = test ? '/foo/bar/' : '/foo/bar/?test=1';

在我的角度应用的生命周期中,测试会在其他地方更改,我希望iframe的源代码能够相应更新。

看起来,因为唯一的区别在于URL参数,更改将被angular忽略。

如果我将代码更改为:

$scope.previewUrl = test ? '/foo/bar/' : '/foo/bar/baz/';
一切正常。

这是angularjs中的错误还是我错过了什么? 我使用的是角度版本1.2.5

2 个答案:

答案 0 :(得分:2)

使用&#34; $ sce&#34;服务以解决您的问题,如下所示。

// in Controller 

app.controller('TestWorkController', function ($scope, $sce) { 
$scope.previewUrl = $sce.trustAsResourceUrl(true ? 'http://clips.vorwaerts-gmbh.de/VfE.webm' : 'http://www.quirksmode.org/html5/videos/big_buck_bunny.webm');
});

//View
  <iframe style="width: 100%;height: 240px;" scrolling="no" frameborder="0" ng-src="{{previewUrl}}"></iframe>

答案 1 :(得分:1)

我猜您可能需要使用$sce.trustAsResourceUrl才能使其正常运行。

根据您的示例,您需要做的更改是

$scope.previewUrl = $sce.trustAsResourceUrl(test ? '/foo/bar/' : '/foo/bar/baz/');

HTH