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 相关文章推荐
JavaScript对象、属性、事件手册集合方便查询
Jul 04 Javascript
JavaScript+CSS控制打印格式示例介绍
Jan 07 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
JS日程管理插件FullCalendar简单实例
Feb 07 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
JavaScript中重名的函数与对象示例详析
Sep 28 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 Javascript
JS如何实现手机端输入验证码效果
May 13 Javascript
工作中常用js功能汇总
Nov 07 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
UCenter Home二次开发指南
2009/05/28 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
这段js代码得节约你多少时间
2011/12/20 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
express.js中间件说明详解
2019/03/19 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
汽车促销活动方案
2014/03/31 职场文书
拉歌口号大全
2014/06/13 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
班主任工作总结范文
2015/08/13 职场文书
nginx 配置缓存
2022/05/11 Servers