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 相关文章推荐
刷新页面实现方式总结(HTML,ASP,JS)
Nov 13 Javascript
js对象的构造和继承实现代码
Dec 05 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 Javascript
全面了解构造函数继承关键apply call
Jul 26 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
Node.js常用工具之util模块
Mar 09 Javascript
javascript回调函数详解
Feb 06 Javascript
JS简单获得节点元素的方法示例
Feb 10 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 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
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
Yii2单元测试用法示例
2016/11/12 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
python中mechanize库的简单使用示例
2014/01/10 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python 如何区分return和yield
2020/09/22 Python
施工资料员岗位职责
2014/01/06 职场文书
七年级历史教学反思
2014/02/05 职场文书
外联部演讲稿
2014/05/24 职场文书
设备管理实施方案
2014/05/31 职场文书
护士找工作求职信
2014/07/02 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
2014年小学教研工作总结
2014/12/06 职场文书
二手房购房意向书
2015/05/09 职场文书
python基础之错误和异常处理
2021/10/24 Python
redis中lua脚本使用教程
2021/11/01 Redis