深究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 相关文章推荐
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
JavaScript保留两位小数的2个自定义函数
May 05 Javascript
使用jspdf生成pdf报表
Jul 03 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
手机端实现Bootstrap简单图片轮播效果
Oct 13 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
在Vue组件中使用 TypeScript的方法
Feb 28 Javascript
详解Vue中watch的高级用法
May 02 Javascript
Vue表单demo v-model双向绑定问题
Jun 29 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 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创建基本身份认证站点的方法详解
2013/06/08 PHP
使用php实现截取指定长度
2013/08/06 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
JS的replace方法介绍
2012/10/20 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
出生证明公证书
2014/04/09 职场文书
服务理念标语
2014/06/18 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
2015年电话客服工作总结
2015/05/18 职场文书