深究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 相关文章推荐
input、button的不同type值在ajax提交表单时导致的陷阱
Feb 24 Javascript
jquery控制listbox中项的移动并排序
Nov 12 Javascript
javascript学习笔记(四) Number 数字类型
Jun 19 Javascript
js浏览器本地存储store.js介绍及应用
May 13 Javascript
JS学习之表格的排序简单实例
May 16 Javascript
巧用Javascript的逻辑运算符
Dec 02 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
React服务端渲染(总结)
Jul 01 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
Mar 12 Javascript
layui动态表头的实现代码
Aug 22 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
vue项目多环境配置(.env)的实现
Jul 21 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/11/23 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
Jquery中dialog属性小记
2010/09/03 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
vue实现评论列表功能
2019/10/25 Javascript
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python将人民币转换大写的脚本代码
2013/02/10 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
主持人婚宴答谢词
2014/01/28 职场文书
高二学生评语大全
2014/04/25 职场文书
大学活动总结模板
2014/07/10 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
订货会主持词
2015/07/01 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers