如果出于安全考虑,我会从我的服务器编码中发送所有特殊字符(例如,存储在我的数据库符号<
输出中为<
)。
我的表格中有一个输入
<input ng-model="form.description">
但插入输入的值显示为<
。我该怎么做,将ng-model更改为实际<
?
我已经找到了很多关于$sce的信息,但无法创建一种有效的方法。
目前我正在考虑指令
function TrustAsHTMLDirective($sce) {
return {
restrict: 'A',
scope: {
ngModel: '='
},
link: function(scope, elem) {
scope.$watch('ngModel', function (after, before) {
if (after && after !== before) {
scope.ngModel = $sce.trustAsHtml(elem[0].value);
}
})
}
};
这应该像<input ng-model="form.description" trust-as-html>
一样使用,但它不起作用,而且我的应用程序中的所有输入可能都需要这个。
所以问题是 - 如何将ng-model更改为实际值,但保持我的应用安全?
谢谢!
答案 0 :(得分:-1)
您可以使用lodash usescape函数转换HTML实体&amp;,&lt;,&gt;,&#34;和&#39;字符串中的相应字符。
<强>语法强>
_.unescape([string=''])
示例:强>
_。unescape(&#39; fred,barney,&amp; pebbles&#39;);
output =&gt; &#39;弗雷德,巴尼,&amp;卵石&#39;