javascript - 你可以在没有指令的情况下在 ngModel 上动态渲染 HTML 吗?

标签 javascript angularjs sanitization ngsanitize

我有两个不同的元素,一个是内容可编辑的 DIV 作为指令,您可以在其中输入一些 HTML,例如 img 标签,并且它将在按键时自动呈现。

其次,我有一个绑定(bind)到 ng-model 的文本区域,我还希望用户能够键入 HTML(主要是 img 标签),以便它自动呈现,但是,如果用户键入,我无法弄清楚这是否可行标记,然后按原样保存。

在文本区域上实现我想要的效果的最佳解决方案是什么?我是否必须制作一个指令,或者是否有一个更简单的解决方案,我可以利用它所绑定(bind)的 ng-model 变量。

最后一个问题,我是否需要担心任何安全隐患,以便安全地处理输入? IE。我不希望人们把脚本标签放在那里,只放 img 标签、链接,也许还有一些格式化 HTML。我在渲染之前使用 $santize 服务来执行 $sanitize(htmlContent) 指令。

最佳答案

您应该使用Strict Contextual Escaping

做类似的事情:

<textarea ng-model="content"></textarea>
<div ng-bind-html="getSafe()"></div>

在你的 Controller 中:

$scope.getSafe = function(){
    return $sce.trustAsHtml($scope.content);
}

关于javascript - 你可以在没有指令的情况下在 ngModel 上动态渲染 HTML 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26632392/

相关文章:

javascript - 使用 JQuery 在 AJAX 上成功迭代 JSON 数据

AngularJS忽略了一些标题

jquery - 使用 Javascript 和 jQuery : Escaping quotes and double quotes automatically? 进行清理

javascript - jquery draggable droppable remove 掉落

javascript - 是否有可能在 angular 和 grunt 中有多个运行 block ?

javascript - 如何在同一页面中使用多个 this.state 计数器来递增单独的变量

javascript - AngularJS 资源 : how to disable url entity encoding

javascript - Angular UI 日历渲染问题

php - 我可以使用此清理功能安全地将数据输出给用户吗

c# - 使用循环向 SQL 查询添加不同的参数