深究AngularJS中$sce的使用


Posted in Javascript onJune 12, 2017

为什么要要$sce?因为AngularJS里好些地方,比如路径默认是个字符串,不会认为是路径,从而访问不到我们需要的东西,那么我们就可以通过$sce告诉angualrJS这个路径,这样是很安全滴。它有以下几种:

$sce.trustAs(type,name);
$sce.trustAsUrl(value);
$sce.trustAsHtml(value);
$sce.trustAsResourceUrl(value);
$sce.trustAsJs(value);

1.trustAsResourceUrl

<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> 
</head>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
  第一种方式:<br/>
  有$sce处理:<audio ng-src="{{sceControl(formData.mediaUrl)}}" controls="controls">您的浏览器不支持html5</audio><br/>
  无$sce处理:<audio ng-src="{{formData.mediaUrl}}" controls="controls">您的浏览器不支持html5</audio><br/><br/>

  第二种方式:<br/>
  <audio ng-src="{{data.url}}" controls="controls">您的浏览器不支持html5</audio>
</div>

<script>
  var app = angular.module('myApp', []);
  app.controller('myCtrl', function($scope,$sce){
    //第一种方式数据源
    $scope.formData={
      "name":"视频",
      "mediaUrl":"http://res.audiogroup.cn/res/upload/agx_ims_creative/audio/20160307/bpryk96.mp3"//视频路径
    };   
    $scope.sceControl = $sce.trustAsResourceUrl;//第一种处理方式

    //第二种方式数据源
    $scope.data={
      "name":"视频",
      "url":"http://res.audiogroup.cn/res/upload/agx_ims_creative/audio/20160307/bpryk96.mp3"//视频路径
    }; 
    $scope.data.url = $sce.trustAsResourceUrl($scope.data.url);//第二种处理方式

  });
</script>
</body>
</html>

2.trustAsHtml

<body>
<div ng-app="myApp" ng-controller="myCtrl">
  未处理的:
  <div ng-repeat="item in formData">
    {{item.name}} :{{item.htmlVal}}
  </div>

  <br/>处理过的:<button ng-click="look()">查看处理结果</button>
  <div ng-repeat="item in data">
    {{item.name}} :<p ng-bind-html = "item.htmlVal"></p>
  </div>
</div>

<script>
  var app = angular.module('myApp', []);
  app.controller('myCtrl', function($scope,$sce){
    //未处理数据源
    $scope.formData=[
      {"name":"张春玲","htmlVal":"我是<span style='color:red;'>张春玲<span>"},
      {"name":"sb","htmlVal":"我是<span style='color:red;'>sb<span>"}
    ]; 

    //处理结果
    $scope.look = function(){alert
      $scope.data=[
        {"name":"张春玲","htmlVal":"我是<span style='color:red;'>张春玲<span>"},
        {"name":"sb","htmlVal":"我是<span style='color:red;'>sb<span>"}
      ];
      for(var i=0;i<$scope.data.length;i++){
        $scope.data[i].htmlVal = $sce.trustAsHtml($scope.data[i].htmlVal);
      }
    };

  });
</script>
</body>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
Mar 01 Javascript
js onclick事件传参讲解
Nov 06 Javascript
js对象转json数组的简单实现案例
Feb 28 Javascript
一种新的javascript对象创建方式Object.create()
Dec 28 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
Jan 19 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
原生JS轮播图插件
Feb 09 Javascript
iview table高度动态设置方法
Mar 14 Javascript
分享vue里swiper的一些坑
Aug 30 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
May 06 Javascript
Vue3 源码导读(推荐)
Oct 14 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
JS身份证信息验证正则表达式
Jun 12 #Javascript
用原生JS实现简单的多选框功能
Jun 12 #Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
Jun 12 #Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 #Javascript
AngularJS 异步解决实现方法
Jun 12 #Javascript
jquery+css实现侧边导航栏效果
Jun 12 #jQuery
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 #Javascript
You might like
PHP脚本的10个技巧(4)
2006/10/09 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Cpy和Python的效率对比
2015/03/20 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
python计算两个数的百分比方法
2018/06/29 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
详解Django 时间与时区设置问题
2019/07/23 Python
python requests证书问题解决
2019/09/05 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
Python 发送邮件方法总结
2020/08/10 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
《诚实与信任》教学反思
2014/04/10 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
工地质量标语
2014/06/12 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Python实现打乒乓小游戏
2021/09/25 Python