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之Document元素选择器篇
Aug 14 Javascript
Jquery插件 easyUI属性汇总
Jan 19 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
jQuery中not()方法用法实例
Jan 06 Javascript
input框中的name和id的区别
Nov 16 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
vue + typescript + 极验登录验证的实现方法
Jun 27 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
Jul 25 Javascript
详解vite2.0配置学习(typescript版本)
Feb 25 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 中文处理函数集合
2008/08/27 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PDO::errorInfo讲解
2019/01/28 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
Javascript Objects详解
2014/09/04 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
玩转python爬虫之cookie使用方法
2016/02/17 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
python3实现windows下同名进程监控
2018/06/21 Python
Python3爬楼梯算法示例
2019/03/04 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
pytorch中图像的数据格式实例
2020/02/11 Python
python连接mongodb集群方法详解
2020/02/13 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
半年思想汇报
2013/12/30 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
你真的会用Mysql的explain吗
2022/03/31 MySQL