AngularJS中取消对HTML片段转义的方法例子


Posted in Javascript onJanuary 04, 2015

今天尝试用 Rails 做后端提供 JSON 格式的数据, AngularJS 做前端处理 JSON 数据,其中碰到 AngularJS 获取的是一段 HTML 文本,如果直接使用 data-ng-bind 的话是被转义过的,使用 data-ng-bind-html 则可以取消转义。

但是直接使用 data-ng-bind-html 的话会提示错误

Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.

HTML 片段需要先使用 $sce.trustAsHtml(html_in_string) 将标记为信任,然后才可以使用 data-ng-bind-html="html_in_string" 取消转义。

在我这里 Angular 通过 API 或取的所有文章中,每篇文章有个 html_body 属性是经过 Markdown 或者 Org 渲染过的 HTML 片段。

在通过 API 获取 JSON 数据后,使用 AngularJS 提供的 angular.forEach 方法对每个 post 的 html_body 进行标记,并将结果保存为 trustedBody, 然后在 HTML 中使用 data-ng-bind-html="post.trustedBody" 即可以取消转义。

AngularJS 部分

Blog.controller('PostsController', function ($scope, $http, $sce) {

  $scope.posts = [];
  $scope.syncPosts = function () {

    var request = $http.get('http:/localhost:3000/posts.json');

    request.success(function (response) {

      $scope.posts = angular.forEach(angular.fromJson(response), function (post) {

        post.trustedBody = $sce.trustAsHtml(post.html_body);

      });

    });

  };
  $scope.syncPosts();

});

HTML 部分
<div class="post-body markup-body" data-ng-bind-html="post.trustedBody"></div>
Javascript 相关文章推荐
原始的js代码和jquery对比体会
Sep 10 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
May 10 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
基于javaScript的this指向总结
Jul 22 Javascript
vue页面加载闪烁问题的解决方法
Mar 28 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
vue集成百度UEditor富文本编辑器使用教程
Sep 21 Javascript
13 个npm 快速开发技巧(推荐)
Jul 04 Javascript
解决layui动态添加的元素click等事件触发不了的问题
Sep 20 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 10 Javascript
jQuery中:enabled选择器用法实例
Jan 04 #Javascript
jQuery中:file选择器用法实例
Jan 04 #Javascript
jQuery中:button选择器用法实例
Jan 04 #Javascript
原生javascript实现隔行换色
Jan 04 #Javascript
jQuery中:reset选择器用法实例
Jan 04 #Javascript
浅谈 javascript 事件处理
Jan 04 #Javascript
jquery实现可拖拽弹出层特效
Jan 04 #Javascript
You might like
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
python 系统调用的实例详解
2017/07/11 Python
python读取xlsx的方法
2018/12/25 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python实现FTP文件传输的实例
2019/07/07 Python
django将数组传递给前台模板的方法
2019/08/06 Python
python字典key不能是可以是啥类型
2020/08/04 Python
详解python metaclass(元类)
2020/08/13 Python
如何基于Python按行合并两个txt
2020/11/03 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
小学生开学第一课活动方案
2014/03/27 职场文书
搞笑结婚保证书
2015/05/08 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript