我认为我有以下内容:
<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
答案 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