如何使用ngSanitize正确转义特殊字符?

时间:2014-04-01 05:54:36

标签: html5 angularjs angularjs-directive special-characters ngsanitize

我想让用户输入特殊字符,例如"&"然后在提交页面时将这些转换为正确的html。前"&" => "&放大器;放大器"我已阅读这些示例并找到 ng-bind-html $ sce

似乎ng-bind-html对我的需求毫无用处,因为它只会显示从视图中正确转换的控制器发送的html文本。例如:它将显示"& amp" as"&"给用户。所以我正在做的是使用" $ sce"转换字符。在将其发送到服务器之前在控制器上。例如:

var accountName = $sce($scope.accountName);

这是正确的方法吗?或者是否有一种直接的方式来绑定视图以将已清理的文本传递给控制器​​,就像ng-bind-html但是在双向绑定中?我使用 Angular 1.2.4

1 个答案:

答案 0 :(得分:7)

基于 angular-sanitize.js 中包含的 ngSanitize 模块下的参考和示例,将输入解析为正确转义的html字符串的理想方法是使用< strong> $ sanitize 组件。例如:

var accountName = $sanitize( $scope.accountName );

为此,需要在角度应用模块中包含 ngSanitize

var myapp = angular.module('myapp',['ngSanitize']);

并在使用$ sanitize的控制器中包含 $ sanitize

myapp.controller('myctrl', [ "$scope", "$sanitize", function ( $scope, $sanitize) {
  // code goes here

  var accountName = $sanitize( $scope.accountName );

  // further processing after sanitizing html input goes here
  }
}]);

$ sce 是一种提供严格上下文转义的角度服务,其中angular要求在某些上下文中使用可安全使用的值进行绑定。有关详细信息,请参阅angular documentation