所以对于这个例子,我有一个我用$ http检索的字符串列表,字符串可以包含一行中的多个空格,为了正确显示我需要用nbsp html替换字符串实体。对用户提供的字符串进行消毒也很重要。什么是最简单的方法来保持$ sce启用字符串被正确消毒的地方,但在完成之后,用实体替换任何空格并正确显示它而不是文字?
我把一个jsfiddle放在一起。我试图这样做,所以带有Hello的字符串和单词中的一组空格就像它一样显示,但我不希望b实体标记以实际粗体显示,我希望它被消毒/转义并显示为通常的文字html标签。
<div ng-app='myApp' ng-controller="Controller">
<ul>
<li ng-repeat="item in items" ng-bind-html="item | includespaces">
<!--{{ item }}-->
</li>
</ul>
var app = angular.module('myApp', []);
app.controller('Controller', function ($scope, $sce) {
// Assume this is data from $html.
$scope.items = ['He llo', 'Testing<b>bold</b>', 'bleh'];
});
app.filter('includespaces', ['$sce', function ($sce) {
return function (text) {
//return $sce.getTrustedHtml(text);
return $sce.trustAsHtml(text.replace(/ /g, " "));
}
}]);