AngularJS:从字符串中插入 HTML

Posted

技术标签:

【中文标题】AngularJS:从字符串中插入 HTML【英文标题】:AngularJS: Insert HTML from a string 【发布时间】:2013-01-23 13:53:20 【问题描述】:

我已经为此寻找了很多,但我要么找不到答案,要么不明白。一个具体的例子将赢得投票 =)

我有一个返回 html 字符串的函数。 我无法更改功能。 我希望将字符串表示的 html 插入到 DOM 中。 我很乐意使用控制器、指令、服务或其他任何可行的方法(并且是相当好的做法)。 免责声明:我不太了解 $compile。

这是我尝试过的:

// My magic HTML string function.
function htmlString (str) 
    return "<h1>" + str + "</h1>";


function Ctrl ($scope, $compile) 
  $scope.htmlString = htmlString;

Ctrl.$inject = ["$scope", "$compile"];

那没用。

我也尝试将其作为指令:

// My magic HTML string function.
function htmlString (str) 
    return "<h1>" + str + "</h1>";


angular.module("myApp.directives", [])
  .directive("htmlString", function () 
    return 
      restrict: "E",
      scope:  content: "@" ,
      template: " htmlStr(content) "
    
  );

  ... and in my HTML ...

  <html-string content="foo"></html-string>

帮助?

注意

我查看了这些以及其他内容,但无法使其发挥作用。

AngularJS : Insert HTML into view AngularJS $http HTML Parser angularjs - inserting $compile-d html AngularJS doesn't execute in HTML inserted with document.write() Escape HTML text in an AngularJS directive

【问题讨论】:

【参考方案1】:

查看此链接中的示例:

http://docs.angularjs.org/api/ngSanitize.$sanitize

基本上,Angular 有一个将 html 插入页面的指令。在您的情况下,您可以使用 ng-bind-html 指令插入 html,如下所示:

如果你已经完成了所有这些:

// My magic HTML string function.
function htmlString (str) 
    return "<h1>" + str + "</h1>";


function Ctrl ($scope) 
  var str = "HELLO!";
  $scope.htmlString = htmlString(str);

Ctrl.$inject = ["$scope"];

然后在你的html那个控制器范围内,你可以

<div ng-bind-html="htmlString"></div>

【讨论】:

谢谢!那行得通。进行了一些修改:修复了链接(奇怪地解析了它),将“ng-bind-html”更改为“ng-bind-html-unsafe”,并给出了一个更完整的示例。 在 1.0.8 之前是 ng-bind-html-unsafe,之后只是 ng-bind-html,因为安全和不安全的功能被合并了 github.com/angular/angular.js/blob/master/… @AakilFernandes,我必须将ngSanitize 添加到我的主模块中,ng-bind-html 才能工作。【参考方案2】:

您也可以使用$sce.trustAsHtml('"&lt;h1&gt;" + str + "&lt;/h1&gt;"'),如果您想了解更多详情,请参考$sce

【讨论】:

以上是关于AngularJS:从字符串中插入 HTML的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AngularJS 从 JSON 字符串显示 HTML

在angularjs中将数据从前端插入到mysql db

使用angularJS解析ng-bind中的html [重复]

我如何美化在 AngularJS 中作为字符串返回的 XML

ng-bind-html-unsafe 不在 angularjs 中解析 html

AngularJS中的数组未拾取字符串值