【问题标题】:Show Google Maps iFrame from AngularJS从 AngularJS 显示 Google Maps iFrame
【发布时间】:2014-12-17 08:18:03
【问题描述】:

我已经构建了一个 wordpress 插件,用户可以在其中插入像这样的谷歌地图代码:

<iframe src="https://www.google.com/maps/embed?pb=xxxxx" width="100%" height="100%" frameborder="0" style="border:0"></iframe>

此代码存储在 wp-database 中,我尝试从我的 angularjs 代码中获取它..

getMaps();  
function getMaps(){ 
    $http.post("wp-content/themes/koplan/pages/getMaps.php").success(function(mapsdata){
        $scope.maps = mapsdata;
    });
};

我的问题是:如何在前端 php/html 中绑定/渲染 iframe?我试过&lt;div ng-bind-html=maps&gt;,但什么也没出现。

还有什么办法吗??请帮助我,谢谢

【问题讨论】:

  • 为什么不能绑定?它说什么?
  • @trainoasis 在控制台中没有警告,如果我使用 {{}} 渲染,数据(iframe 标签)正在查看,但是如果我使用 ng-bind-html 渲染,地图仍然是空白的。我只是想要转换 iframe 标签以使用 angular 查看地图
  • 可能你只需要使用 trustashtml 吗? docs.angularjs.org/api/ng/service/$sce#methods_trustashtml

标签: javascript angularjs wordpress google-maps iframe


【解决方案1】:

您可能需要的是sce,因为我猜您的 iframe 不被接受为受信任的 HTML。

因此,在将 sce 包含到您的控制器中之后

app.controller("MainController", ['$scope', '$http','$sce', function($scope, $http, $sce){  

,你会做的

$scope.maps = $sce.trustAsHtml(mapsdata);

另请参阅this 问题/答案。

此外,对于您确定可以“安全”显示的其他 HTML 数据,您可以使用此过滤器:

app.filter('unsafe', function($sce) {
   return function(val) {
      return $sce.trustAsHtml(val);
   };
});

你可以使用它

ng-bind-html="yourHTMLdataVariable | unsafe"

【讨论】:

  • 嘿 @trainoasis 感谢 angularjs 文档,我通过了。并感谢您提供该案例的链接。感谢您的回答,我会尝试的。
  • 我已经按照您的建议进行了尝试,但出现了错误“错误:[$sce:itype] Attempted to trust a non-string value in a content requires a string: Context: html” 我忘了mapsdata 是一个 json.encode.response ,所以该值是一个数组,因为它是一个以上的地图我该如何解决这个问题??
  • 您是否在同一个变量上调用了两次 trustAsHtml?在角码中使用过滤器和?您只需使用其中一种方法。还要确保您将字符串值传递给 trustAsHtml ?使用 'typeof' 显示变量类型。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 感谢您提供有用的答案,顺便说一句,我没有使用不安全的过滤器,因为我正在使用它但仍然无法正常工作。通过将它们(mapsdata)一一拆分/转换为字符串来解决问题,而不是数组可以trustAshtml。只有字符串可以,我将mapsdata 一个一个拆分,而不是ng-repeat 来查看它们。谢谢@trainoasis
  • 嘿.. 对不起,我有一个小问题。我想你可以帮忙..你可以看看这个stackoverflow.com/q/27517288/4368559
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 2022-11-04
相关资源
最近更新 更多