关于angularjs:具有angular-translate的ng-bind-html呈现文本而不是HTML标签

ng-bind-html with angular-translate renders text instead of HTML tag

我回到带有angular-translate的旧AngularJS项目(1.7.2),并且在ng-bind-html上苦苦挣扎。

在我的HTML中,我写了这个

1
<span ng-bind-html="'LEFT_PANEL.VISITED_AFTER' | translate"></span>

我期望的结果是

1
<span>Visited after this date. </span>

我的翻译文件中包含:

1
"VISITED_AFTER":"Visited after this date"

我实际上得到的是:

1
2
3
<span ng-bind-html="'LEFT_PANEL.VISITED_BEFORE' | translate" class="ng-binding ng-scope">
Visited before this date
</span>

我究竟做错了什么 ?

(是的,我的模块中有ngSanitize)

谢谢


NgTranslate正在使用其自己的消毒剂(文档)

要全局更改消毒策略,请使用$translateProvider.useSanitizeValueStrategy("STRATEGY");
如果您只想对该元素使用其他策略,请使用属性translate-sanitize-strategy


可能的重复项。

似乎与HTML解码有关。
添加此功能:

1
2
3
4
5
function decodeHtml(html) {
  var txt = document.createElement("textarea");
  txt.innerHTML = html;
  return txt.value;
}

并用以下内容包围要打印的内容:decodeHtml(...)

其实只是看看这个笨蛋