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冒泡事件的快速解决方法
Dec 16 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
JavaScript实现找出数组中最长的连续数字序列
Sep 03 Javascript
实例详解angularjs和ajax的结合使用
Oct 22 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
jQuery添加删除DOM元素方法详解
Jan 18 Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
Dec 28 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
Feb 22 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
May 11 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
angular2 ng2 @input和@output理解及示例
Oct 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
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
javascript 实用的文字链提示框效果
2010/06/30 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
python通过yield实现数组全排列的方法
2015/03/18 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Python Django路径配置实现过程解析
2020/11/05 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
工作迟到检讨书
2014/02/21 职场文书
创先争优承诺书范文
2014/03/31 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
天坛导游词
2015/02/02 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
小学同学聚会感言
2015/07/30 职场文书