【发布时间】:2020-02-14 19:18:54
【问题描述】:
似乎 ng-bind-html 正在将'</' 渲染为关闭标记,因此它已被清理,并且字符串已通过,但它在 html 中呈现为关闭标记,这意味着没有显示。比如'我发现</是个好东西',如果我把字符串绑定到它上面,</之后的所有东西都会被截断,它只会在网页中显示'我找到'
(添加)
问题其实是我们同时混合使用了html编码和url编码,现在前端的输入就像'</是好的',然后有一个服务来编码它,编码后它变成 '<%2F is good',在它进入数据库之前,它变成 '</ is good',当我们取回数据时,ng-bind-html 将其选为 '</ is good'。但是我们有一个使用 ng-model 来编辑它的输入字段,因此 ng-model 将其选为 '$lt/ is good',这与数据库相同。所以在我们编辑它之前,我们在控制器中做了一个替换()函数,所以我们暂时修复了这个问题。但是还是不知道对不对,即使在stackoverflow本身也存在类似的问题,可以看到</的背景是灰色的,因为stackoverflow富文本编辑器不把它当作普通字符串,所以我做了在文本编辑器中显示此特定字符串的反引号转义。
【问题讨论】:
-
这里可能发生了一些您可能没有考虑到的事情。例如,您可能正在处理 Angular 的 HtmlSanitization 脚本,禁止您任意注入 HTML 等。虽然您没有我们可以使用的示例,但我很难理解您在说什么。请创建一个,我们可以解决它。
-
也许您正在寻找 ng-bind 而不是 ng-bind-html?
-
@Fallenreaper 你是对的,很抱歉我没有提供足够的上下文。问题其实是我们同时混合使用了html编码和url编码,现在前端的输入就像'是好的',然后有一个服务对其进行编码,编码后就变成了'<%2F 很好',在它进入数据库之前,它变成'</ 很好',当我们取回数据时,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