2

我的$scope包含以下内容items

$scope.items= [
    { body : '<span> value </span>' },
    { body : '<span> whatever </span>' }
];

当我尝试

<li ng-repeat="item in items">{{item.body}}</li>

HTML 输出为:

<li>&lt;span&gt; value &lt;/span&gt;</li>
<li>&lt;span&gt; whatever &lt;/span&gt;</li>

然后浏览器上出现的文字是这样的:

<span> value </span>
<span> whatever </span>

如何转义跨度并使它们被解析为 HTML?

编辑:已接受答案中的链接不再适用于最新版本。目前这就是你的做法

4

2 回答 2

3

如果您绝对确定您正在创建的代码不能包含来自用户数据的任何漏洞,请查看 ngBindHtmlUnsafe:

http://docs.angularjs.org/api/ng.directive:ngBindHtmlUnsafe

如果您需要清理可能有危险的 html 片段,请查看 Sanitize 模块中的 ngBindHtml:

http://docs.angularjs.org/api/ngSanitize.directive:ngBindHtml

于 2013-06-03T18:00:47.760 回答
0

已接受答案中的链接不再适用于当前版本的 Angular。如果您确定它已经过清理,您可以执行类似的操作来禁用转义。更新了严格上下文转义的链接:https ://docs.angularjs.org/api/ng/service/%24sce

var app = angular.module('search-app')
                 .config(['$sceProvider', function ($sceProvider) {
                     $sceProvider.enabled(false) ;// global override
                  }]);

   app.controller('SearchController', function ($scope, $http) {

   }
于 2014-09-06T13:21:20.333 回答