AngularJS {{}}占位符在Iframe标记内不起作用

时间:2014-07-24 20:23:54

标签: javascript angularjs iframe

我是一个陌生人的陌生人....

在我的来源中,为什么会这样:

Video Url: {{exercise.videos[0].url}}

通过显示视频的网址来工作......但是:

<iframe src="http://fast.wistia.net/embed/iframe/{{exercise.videos[0].url}}"></iframe>

只放&{39; {{exercise.videos [0] .url}}&#39;和其他信息不一样?

4 个答案:

答案 0 :(得分:2)

因为AngularJS未评估src。但ng-src是:

<iframe ng-src="http://fast.wistia.net/embed/iframe/{{exercise.videos[0].url}}"></iframe>

答案 1 :(得分:0)

这里的问题不是iframe标签本身,而是src属性。对src属性使用角度变量时,需要使用ng-src指令。

<iframe ng-src="http://fast.wistia.net.embed.iframe/{{exercise.videos[0].url}}"></iframe>

答案 2 :(得分:0)

第一个示例中的括号是ngBind指令的简写,粗略地说只设置元素的文本,而不是像其他模板语言一样充当模板中的一般文本替换。 / p>

答案 3 :(得分:0)

由于“严格上下文转义”,此限制已到位,并且是AngularJS中的一种机制,可帮助防止XSS和点击劫持。

如果您想了解更多信息,请查看此处:

https://docs.angularjs.org/api/ng/service/$sce

上面的注释是正确的,你可以使用ngSrc指令来避免解决它,但看起来你必须注入$ sce模块并使用trustAsResourceUrl()方法来使它工作,这是一个工作小提琴:

HTML:

<iframe ng-src="{{exercise.videos[0].url}}"></iframe>

JS:

$scope.exercise.videos = [{url:$sce.trustAsResourceUrl("http://fast.wistia.net/embed/iframe/someUrl.html")}];

http://jsfiddle.net/glandrum101/a5jxg/2/