深究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 相关文章推荐
如何获取网站icon有哪些可行的方法
Jun 05 Javascript
js中跨域方法原理详解
Jul 19 Javascript
animate 实现滑动切换效果【实例代码】
May 05 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
Jan 05 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
Aug 28 Javascript
node实现登录图片验证码的示例代码
Apr 20 Javascript
VUE 配置vue-devtools调试工具及安装方法
Sep 30 Javascript
小程序云开发实战小结
Oct 25 Javascript
three.js搭建室内场景教程
Dec 30 Javascript
vuex管理状态仓库使用详解
Jul 29 Javascript
快速解决element的autofocus失效问题
Sep 08 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
Python绑定方法与非绑定方法详解
2017/08/18 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python实现微信小程序支付功能
2019/07/25 Python
python中的列表与元组的使用
2019/08/08 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
python框架django项目部署相关知识详解
2019/11/04 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
python 实现简单的FTP程序
2019/12/27 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
个性与发展自我评价
2014/02/11 职场文书
我为自己代言广告词
2014/03/18 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
招标保密承诺书
2015/01/20 职场文书
安全生产奖惩制度
2015/08/06 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js