【问题标题】:AngularJs ng-src in Iframe [duplicate]Iframe中的AngularJs ng-src [重复]
【发布时间】:2014-08-30 21:50:47
【问题描述】:

我正在尝试使用范围变量设置 iframe 的 ng-src,但它一直显示为空白。

我试过这个:

<div ng-repeat="url in urls">
  <div ng-click="testAlert(url.domain)">
    <iframe ng-src="{{ url.domain }}" ></iframe>
    <div style="text-align: center">{[ url.domain ]}</div>
  </div>
</div>

文本显示得很好,所以我知道这些值是存在的,并且单击会提醒选择域。只是 ng-src 似乎最终是空白的,因此不会启动该站点。如果我将 ng-src 硬编码到外部站点,它就可以工作。

【问题讨论】:

  • 你试过ng-src="url.domain",不包括{{}}

标签: javascript angularjs iframe


【解决方案1】:

很可能与 $sce 未配置为在插入时信任外部资源有关...尝试将其放入您的控制器中(确保注入 $sce 服务)。 trustAsResourceUrl 是您感兴趣的方法,您可以将要使用的 URL 传递给该方法:

.controller("MainController", function ($scope, $sce) {
    var urls = [];

    //Need to trust resource to be able to interpolate, see $sce documentation
    urls.push({domain: $sce.trustAsResourceUrl("http://angularjs.org")});
    urls.push({domain: $sce.trustAsResourceUrl("http://www.jquery.com")});

    $scope.urls = urls;

    $scope.testAlert = function (value) {
        alert(value);
    }
});

查看工作fiddle

【讨论】:

  • 还必须将内联更新为.. 注意括号而不是大括号...不知道为什么。但现在可以了。
  • 您的应用程序中是否有某个地方已将 $interpolateProvider 开始和结束符号配置为“{[”和“]}”? “双胡须”,{{}} - 应该像小提琴示例中那样工作。
  • 你是绝对正确的。我将不得不追查为什么这样做。感谢您的帮助!
猜你喜欢
  • 2015-07-27
  • 2020-03-07
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多