使用过滤器标记mousestats的敏感数据

Jak*_*zyk 6 angularjs

我想用MouseStats注释装饰一些敏感数据.目前我这样做:

<td><!-- StartMouseStatsHide -->{{ $ctrl.payerName }}<!-- EndMouseStatsHide --></td>
Run Code Online (Sandbox Code Playgroud)

但是在界面的许多地方都有很多敏感数据,所以我尝试使用过滤器来装饰值

<td>{{ $ctrl.payerName|mousestats_hide }}</td>
Run Code Online (Sandbox Code Playgroud)

过滤器只是用注释包围值.问题是以这种方式将评论转义给实体.

你有什么建议?是否可以使用过滤器?

nal*_*inc 4

是否可以使用过滤器来做到这一点?

是的,可以使用角度过滤器添加/附加变量。

问题是,通过这种方式,评论会被转义给实体。

这是因为您直接在范围内插入变量{{ $ctrl.payerName }}。它不会解析 HTML 标签并按原样显示结果字符串。

ng-bind-html如果您想在给定值周围添加 HTML 注释,您需要指令来防止注释转义到实体。

所以而不是做

<td>{{ $ctrl.payerName|mousestats_hide }}</td>
Run Code Online (Sandbox Code Playgroud)

你应该做

<td ng-bind-html="$ctrl.payerName|mousestats_hide"></td>
Run Code Online (Sandbox Code Playgroud)

这是生成以下标记的工作演示。(我不太喜欢<table>所以只是替换<td><span>

<body ng-controller="MainCtrl" class="ng-scope">
    <span>Payer Name is: </span>
    <span ng-bind-html="payerName |mousestats_hide" class="ng-binding">
      <!-- StartMouseStatsHide -->Jakub Filipczyk<!-- EndMouseStatsHide --> 
    </span>
</body>
Run Code Online (Sandbox Code Playgroud)

注意到我在过滤器中注入的 $sce 服务的使用了吗?

这是为了防止[$sce:unsafe] 错误使 Angular 相信有人试图在安全上下文中使用不安全的值。

希望有帮助!