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 继承实例分析
Nov 04 Javascript
javascript 常用方法总结
Jun 03 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
Angular中自定义Debounce Click指令防止重复点击
Jul 26 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
vue中的inject学习教程
Apr 24 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
react+antd 递归实现树状目录操作
Nov 02 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 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
php使用google地图应用实例
2014/12/31 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
django如何通过类视图使用装饰器
2019/07/24 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
致短跑运动员广播稿
2014/01/09 职场文书
思想品德自我评价
2014/02/04 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
转让协议书范本
2014/09/13 职场文书
群众路线个人整改方案
2014/10/25 职场文书
优秀班组申报材料
2014/12/25 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis