AngularJS:html特殊字符未显示

Mos*_*ham 7 angularjs

我正在尝试在我的模型中显示一个包含特殊字符的html表示的字符串.不幸的是,它并没有显示出真正的角色,我不知道如何让它做到......

这是代码:

<div ng-controller="MyCtrl">
  Hello, {{namea}}!
    <br/>
    &lt;
</div>

<script>
var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.namea = 'Superhero &lt;';
}
</script>
Run Code Online (Sandbox Code Playgroud)

这是输出:

Hello, Superhero &lt;! 
<
Run Code Online (Sandbox Code Playgroud)

这是一个jsfiddle

小智 18

我今天遇到了这个问题.使用AngularJS,在控制器内的数据中,我试图包含一个带'til'字符串的字符串.我尝试了"Español"以及html表示,但都没有显示所需的输出.

一位同事有帮助地指出unicode有效.所以我试过了

{
name : "my site en Espan\u00F1ol"
}
Run Code Online (Sandbox Code Playgroud)

这给了我

my site en Español
Run Code Online (Sandbox Code Playgroud)

如预期的.查看http://unicode-table.com/en/

  • 我是棱角分明的新手,但我没有得到的是,如果它已经在一个已经采用utf8编码的页面上,为什么html编码甚至会发生呢? - 在这种环境中是一个合法的角色,甚至是拉丁语1; 它不是像&,<或>的html语法字符.它甚至不像'或'那样"冒险".那么为什么角度与它有关并且有没有办法让它停止? (3认同)

Eli*_*les 7

您可以使用ng-bind-html-unsafe指令:

<div ng-controller="MyCtrl" ng-bind-html-unsafe="'Hello,' + namea">
</div>
Run Code Online (Sandbox Code Playgroud)

查看docsjsfiddle中的示例.

  • 对于更新版本的角度,ng-bind-html-unsafe不再存在.你需要在你的html模板中使用ng-bind-html,在js函数中使用$ sce.trustAsHtml('Superhero&lt;) (5认同)