深究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中callee与caller的用法和应用场景
Dec 08 Javascript
JS关键字变色实现思路及代码
Feb 21 Javascript
js实现图片轮换效果代码
Apr 16 Javascript
javascript页面渲染速度测试脚本分享
Apr 15 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
探讨Vue.js的组件和模板
Oct 27 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
Sep 19 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 Javascript
vue实现tab栏点击高亮效果
Aug 19 Javascript
ES6的循环与可迭代对象示例详解
Jan 31 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
自己前几天写的无限分类类
2007/02/14 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python pickle模块用法实例
2015/04/14 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Linux下python制作名片示例
2018/07/20 Python
python绘制简单彩虹图
2018/11/19 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
非常详细的C#面试题集
2016/07/13 面试题
司机岗位职责范本
2015/04/10 职场文书
2016年情人节问候语
2015/11/11 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
Python的三个重要函数详解
2022/01/18 Python