深究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 相关文章推荐
Javascript remove 自定义数组删除方法
Oct 20 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
Oct 20 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
Jan 17 Javascript
jQuery中animate动画第二次点击事件没反应
May 07 Javascript
JQ实现新浪游戏首页幻灯片
Jul 29 Javascript
NODE.JS跨域问题的完美解决方案
Oct 20 Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
vue 组件 全局注册和局部注册的实现
Feb 28 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
Apr 17 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
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文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
详细解读Python中解析XML数据的方法
2015/10/15 Python
kafka-python批量发送数据的实例
2018/12/27 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
python @classmethod 的使用场合详解
2019/08/23 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
心得体会怎么写
2013/12/30 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
毕业生自荐信格式
2014/03/07 职场文书
搞笑创意广告语
2014/03/17 职场文书
门面房租房协议书
2014/12/01 职场文书
2015年底工作总结范文
2015/05/15 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
入党心得体会
2019/06/20 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript