【问题标题】:Is there a way to configure ng-bind-html that it renders a string like '</'?有没有办法配置 ng-bind-html 它呈现像'</'这样的字符串?
【发布时间】:2020-02-14 19:18:54
【问题描述】:

似乎 ng-bind-html 正在将'&lt;/' 渲染为关闭标记,因此它已被清理,并且字符串已通过,但它在 html 中呈现为关闭标记,这意味着没有显示。比如'我发现&lt;/是个好东西',如果我把字符串绑定到它上面,&lt;/之后的所有东西都会被截断,它只会在网页中显示'我找到'

(添加) 问题其实是我们同时混合使用了html编码和url编码,现在前端的输入就像'&lt;/是好的',然后有一个服务来编码它,编码后它变成 '&lt%2F is good',在它进入数据库之前,它变成 '&lt/ is good',当我们取回数据时,ng-bind-html 将其选为 '&lt;/ is good'。但是我们有一个使用 ng-model 来编辑它的输入字段,因此 ng-model 将其选为 '$lt/ is good',这与数据库相同。所以在我们编辑它之前,我们在控制器中做了一个替换()函数,所以我们暂时修复了这个问题。但是还是不知道对不对,即使在stackoverflow本身也存在类似的问题,可以看到&lt;/的背景是灰色的,因为stackoverflow富文本编辑器不把它当作普通字符串,所以我做了在文本编辑器中显示此特定字符串的反引号转义。

【问题讨论】:

  • 这里可能发生了一些您可能没有考虑到的事情。例如,您可能正在处理 Angular 的 HtmlSanitization 脚本,禁止您任意注入 HTML 等。虽然您没有我们可以使用的示例,但我很难理解您在说什么。请创建一个,我们可以解决它。
  • 也许您正在寻找 ng-bind 而不是 ng-bind-html?
  • @Fallenreaper 你是对的,很抱歉我没有提供足够的上下文。问题其实是我们同时混合使用了html编码和url编码,现在前端的输入就像'是好的',然后有一个服务对其进行编码,编码后就变成了'&lt%2F 很好',在它进入数据库之前,它变成'&lt/ 很好',当我们取回数据时,ng-bind-html 将它作为' 很好'。但是我们有一个使用 ng-model 来编辑它的输入字段,因此 ng-model 将其选为 '$lt/ is good',这与数据库相同。我们现在通过硬编码修复它
  • @StevePak 我们仍然需要清理部分,所以我们需要 ng-bind-html
  • @XiaoyeYang 硬编码听起来不像是正确的方法。如果可以给我们 HTML 或 Component sn-ps?我们或许能够解决这个问题。

标签: javascript angularjs directive sanitize ng-bind-html


【解决方案1】:

'&amp;lt;' 更改为'&amp;lt;' 按预期工作:

angular.module("app",[])
.controller("ctrl", function($scope,$sce) {
    $scope.text = "I find &lt;/ is a good thing";
    $scope.trust = $sce.trustAsHtml($scope.text);
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app" ng-controller="ctrl">
   <h2>Using ng-bind-html</h2>
   <p ng-bind-html="trust"></p>
   <h2>Using ng-bind</h2>
   <p ng-bind="text"></p>
</body>

有关详细信息,请参阅

【讨论】:

  • 谢谢!所以就像我对Fallenreaper所说的那样。问题实际上是我们同时混合使用html编码和url编码,现在前端的输入就像'是好的',然后有一个服务来编码它,编码后变成'&lt%2F is good',在进入数据库之前变成'&lt/ is good',当我们取回数据时,ng-bind-html将其拾取为' is好的'。但是我们有一个使用 ng-model 来编辑它的输入字段,因此 ng-model 将其选为 '$lt/ is good',这与数据库相同。但你的回答肯定有帮助!
猜你喜欢
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2021-05-18
  • 2015-09-23
相关资源
最近更新 更多