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 相关文章推荐
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
JQuery遍历元素的后代和同胞实现方法
Sep 18 Javascript
JS实现购物车特效
Feb 02 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
在vscode中统一vue编码风格的方法
Feb 22 Javascript
微信小程序实现留言板功能
Nov 02 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 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
加强版phplib的DB类
2008/03/31 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
js 走马灯简单实例
2013/11/21 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
python与php实现分割文件代码
2017/03/06 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
夜大自我鉴定
2013/10/31 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
老师对学生的寄语
2014/04/09 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
党建工作经验交流材料
2014/05/25 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
教师岗位职责范本
2015/04/02 职场文书