AngularJS:ngModel - 转换特殊符号

时间:2017-07-10 07:13:55

标签: javascript angularjs security angularjs-directive

如果出于安全考虑,我会从我的服务器编码中发送所有特殊字符(例如,存储在我的数据库符号<输出中为&lt;)。 我的表格中有一个输入

<input ng-model="form.description">

但插入输入的值显示为&lt;。我该怎么做,将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更改为实际值,但保持我的应用安全?

谢谢!

1 个答案:

答案 0 :(得分:-1)

您可以使用lodash usescape函数转换HTML实体&amp;,&lt;,&gt;,&#34;和&#39;字符串中的相应字符。

<强>语法

_.unescape([string=''])

示例:

_。unescape(&#39; fred,barney,&amp; pebbles&#39;);

output =&gt; &#39;弗雷德,巴尼,&amp;卵石&#39;