AngularJS:从string插入HTML
我已经看了很多,但是我找不到答案,或者我不明白。 一个具体的例子将赢得投票=)
- 我有一个函数返回一个HTMLstring。
- 我不能改变function。
- 我希望string表示的html被插入到DOM中。
- 我很高兴使用一个控制器,指令,服务,或其他任何工作(并且是相当好的做法)。
- 免责声明:我不明白$编译好。
以下是我所尝试的:
// 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:将HTML插入到视图中
- AngularJS $ http HTMLparsing器
- angularjs – 插入$ compile-d html
- AngularJS不会在用document.write()插入的HTML中执行
- 在AngularJS指令中转义HTML文本
看看这个链接中的例子:
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>
你也可以使用$sce.trustAsHtml('"<h1>" + str + "</h1>"')
,如果你想知道更多的细节,请参阅$ sce