修改 实际上,我从后端日志服务器及其json格式中检索日志。某些键可能具有特殊性。然后我尝试使用AngularJS在UI中呈现这些日志数据。
发生了什么?
you & me
&#34; <span>{{data}}</span>
时,它变为&#34; you & me
&#34;在UI中,默认情况下由$ sce引起,$ sce已启用。 <span ng-bind-html="data"></span>
,按预期显示 - "you & me"
<input type="checkbox" ... ng-checked="verify_enabled(data)" />
,但在函数verify_enabled中,传递的参数变为转义数据 - "you & me"
在angularJs中,有一些特殊字符,例如&#34; &amp;,&lt;,&gt; &#34;将在html中显示时进行转义。
"&" -> "&",
"<" -> "<",
">" -> ">",
由$sce引起的AngularJs的事情。
例如,有一个角色&amp;在原始原始数据中 - controller.js的$ scope.data。
然后在html中,
<span>{{data}}</span>
//{{}} the bind will escape it from '&' to "&"
我在span中使用ng-bind-html找到了这种方法:
<span ng-bind-html="data"></span>
// this will output raw &
好消息 - 它运作良好并按预期显示。
但对于<input>
元素,没有内部HTML,ng-bind-html无法正常工作。
例如:
// raw data in $scope.data = "you & me";
<input type="checkbox"
id="{{data}}_id"
value="{{data}}"
ng-checked="verify_enabled(data)"
ng-click="toggle_enabled(data)" />
// the {{data}} will be escaped to "you & me"
在controller.js中,传递的参数&#39;数据&#39;功能verify_enabled和toggle_enabled。该值将变为&
问题:我想要的是在controller.js中获取原始未转义字符。
这是一个例子,但它并没有像我描述的那样工作。仅供参考。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-checkbox-input-directive-production</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
</head>
<body ng-app="checkboxExample">
<script>
angular.module('checkboxExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.datas = [{msg:'hello karl'},
{msg:'ok fine'},
{msg:'you & me'},
{msg:'special character: < > '}];
$scope.verify_filter_enabled = function (data) {
console.log('data is ' + data);
};
$scope.toggle_filter_enabled = function (data) {
console.log('data is ' + data);
};
}]);
</script>
<div ng-controller="ExampleController" >
<div ng-repeat="data in datas">
<span ng-bind-html="data.msg"></span>
<span>{{data.msg}}</span>
<input type="checkbox"
id="{{data.msg}}_id"
value="{{data.msg}}"
ng-checked="verify_filter_enabled(data.msg)"
ng-click="toggle_filter_enabled(data.msg)" />
</div>
</div>
</body>
</html>
&#13;