【问题标题】:AngularJS {{}} placeholder Not Working Within Iframe TagAngularJS {{}} 占位符在 iframe 标记中不起作用
【发布时间】:2014-07-24 20:23:54
【问题描述】:

我是异乡的陌生人……

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

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

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

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

只放 '{{exercise.videos[0].url}}' 而不是与其他相同的信息?

【问题讨论】:

    标签: javascript angularjs iframe


    【解决方案1】:

    因为 src 没有被 AngularJS 评估。但是ng-src 是:

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

    【讨论】:

    • 几乎可以工作......但我得到:
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        由于“严格的上下文转义”而存在此限制,并且是 AngularJS 中用于帮助防止 XSS 和点击劫持的机制。

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

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

        上述 cmets 是正确的,您可以使用 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/

        【讨论】:

        • 嗯,这呈现为:
        • @NotaGuruAtAll 在 jsFiddle 中还是在您的实际代码中?
        • 实际上,如果我在 jsfiddle 上查看帧源,我会得到
        • 啊,我用检查元素正确地看到了它。但是,ngsrc=会被理解吗?
        • 不会的,我的错。稍后将不得不调整它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 2013-10-19
        • 2017-04-23
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        相关资源
        最近更新 更多