深究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 相关文章推荐
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
JS实现动态移动层及拖动浮层关闭的方法
Apr 30 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
Vue.js计算属性computed与watch(5)
Dec 09 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
Sep 25 Javascript
Vue3.0数据响应式原理详解
Oct 09 Javascript
Vue+penlayers实现多边形绘制及展示
Dec 24 Vue.js
在HTML5 localStorage中存储对象的示例代码
Apr 21 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添加Xdebug扩展的方法
2014/02/12 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python解包用法详解
2021/02/17 Python
高三自我评价
2014/02/01 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
辞职信的写法
2015/02/27 职场文书
大专护理专业自荐信
2015/03/25 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
护士医德医风心得体会
2016/01/25 职场文书
创业计划书之冷饮店
2019/09/27 职场文书