浅谈angularJS中的事件


Posted in Javascript onJuly 12, 2016

什么是事件

•如同浏览器响应浏览器层的事件,比如鼠标点击、获得焦点,angular应用也可以响应angular事件

•angular事件系统并不与浏览器的事件系统相通,我们只能在作用域上监听angular事件而不是DOM事件

事件传播

因为作用域是有层次的,所以我们可以在作用域链上传递事件:

•使用$emit冒泡事件,事件从当前子作用域冒泡到赋作用域,在产生事件的作用域之上的所有作用域都会收到这个事件的通知

$emit()方法带有两个参数:

name  要发出的事件的名称

args   一个参数集合,作为对象传递到事件监听器上

•使用$broadcast向下传递事件,每个注册了监听器的子作用域都会收到这个信息

$broadcast()方法带有两个参数:

name  要广播的事件的名称

args   一个参数集合,作为对象传递到事件监听器上

•使用$on监听事件

$on()方法带有两个参数:

event  事件对象

param  参数集合,$broadcast()、$emit()传递过来的参数集合  示例:

demo.html

 <!doctype html>
 <html ng-app="freefedApp">
   <head>
     <title>angular应用demo</title>
     <script src="angular.js"></script>
     <script src="app.js"></script>
  </head>
  <body>
  <div ng-controller="freefedCtrl">
     <div event-directive change="change(title)"></div>
   </div>
  </body>
 </html>
app.js

 /*声明module*/
 var module = angular.module('freefedApp',[]);

 /*声明控制器*/
 module.controller('freefedCtrl',['$scope',function($scope){
     //监听directiveClick事件
     $scope.$on('directiveClick',function(event,param){
        console.log( param );  // 打印结果 {title : '我是来自指令子级作用域'}
     });

     $scope.change = function(title){
       var result = '请注意接收父级广播';
       //向子级作用域广播parentBroadcast事件
       $scope.$broadcast('parentBroadcast',{msg : result});
     };
 }]);

 /*声明指令*/
 module.directive('eventDirective',function(){
    return {
       scope : {
         change : '&'
       },
      replace : true,
      template : '<a>点我向上冒泡事件</a>',
       link : function( scope,el,attr ){
         el.on('click',function(){
          //向上冒泡directiveClick事件,通知父级作用域
           scope.$emit('directiveClick',{title : '我是来自指令子级作用域'});
         });

        //监听parentBroadcast事件广播
        scope.$on('parentBroadcast',function(event,msg){
           console.log( msg );  //打印结果 { msg : 请注意接收父级广播 }
        });
       }
    };
 });

事件对象属性

$on中的event事件对象属性如下:

•targetScope(作用域对象)

发送或者广播事件的作用域

•currentScope(作用域对象)

当前处理事件的作用域

•name(字符串)

正在处理事件的名称

•stopPropagation(函数)

stopPropagation()函数取消通过$emit触发事件的进一步传播

•preventDefault(函数) preventDefault()把defaultprevented标志设置为true,尽管不能停止事件传播,但是子作用域可以通过defaultprevented标志知道无需处理这个事件

•defaultPrevented(布尔值)

可以通过判断defaultPrevented属性来判断父级传播的事件是否可以去忽略

以上这篇浅谈angularJS中的事件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
jQuery Tools tab(幻灯片)
Jul 14 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
Jan 15 Javascript
JavaScript的漂亮的代码片段
Jun 05 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
May 17 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
May 21 Javascript
JS实现的数字格式化功能示例
Feb 10 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
vue弹窗消息组件的使用方法
Sep 24 Javascript
tsconfig.json配置详解
May 17 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
Apr 19 Javascript
深入剖析JavaScript面向对象编程
Jul 12 #Javascript
JS及PHP代码编写八大排序算法
Jul 12 #Javascript
微信支付 JS API支付接口详解
Jul 11 #Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 #Javascript
JS判断日期格式是否合法的简单实例
Jul 11 #Javascript
深入浅析JavaScript中的scrollTop
Jul 11 #Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 #Javascript
You might like
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
Python入门篇之字典
2014/10/17 Python
python中base64加密解密方法实例分析
2015/05/16 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
np.random.seed() 的使用详解
2020/01/14 Python
python集合能干吗
2020/07/19 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
迟到检讨书400字
2014/01/13 职场文书
幼儿园安全责任书
2014/04/14 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
高温慰问简报
2015/07/21 职场文书