首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS:从字符串插入超文本标记语言

AngularJS:从字符串插入超文本标记语言
EN

Stack Overflow用户
提问于 2013-02-08 05:53:15
回答 2查看 124.9K关注 0票数 74

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

  • 我有一个返回HTML字符串的函数。
  • 我不能更改该函数。
  • 我希望将字符串表示的html插入到DOM中。
  • 我很乐意使用控制器、指令、服务或任何其他有效的东西(这是相当好的方法,但我不太理解$compile。

这是我尝试过的:

代码语言:javascript
复制
// My magic HTML string function.
function htmlString (str) {
    return "<h1>" + str + "</h1>";
}

function Ctrl ($scope, $compile) {
  $scope.htmlString = htmlString;
}
Ctrl.$inject = ["$scope", "$compile"];

这不管用。

我也试着把它作为一个指令:

代码语言:javascript
复制
// 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>

帮助?

备注

我看了看这些,还有其他的,但是我不能让它工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-08 06:55:34

请看此链接中的示例:

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

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

如果您已经完成了所有这些操作:

代码语言:javascript
复制
// 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中,您可以

代码语言:javascript
复制
<div ng-bind-html="htmlString"></div>
票数 90
EN

Stack Overflow用户

发布于 2015-10-21 11:50:45

您也可以使用$sce.trustAsHtml('"<h1>" + str + "</h1>"'),如果您想了解更多详细信息,请参阅$sce

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14761724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档