浅谈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 相关文章推荐
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
js 日期比较相关天数代码
Apr 02 Javascript
js判断游览器类型及版本号的代码
May 11 Javascript
javascript里使用php代码实例
Dec 13 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
在JS循环中使用async/await的方法
Oct 12 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
Dec 11 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 Javascript
vue-cli 关闭热更新操作
Sep 18 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中的 == 运算符进行字符串比较
2006/11/26 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
JS之小练习代码
2008/10/12 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
python的常见矩阵运算(小结)
2019/08/07 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
Django中ORM的基本使用教程
2020/12/22 Python
Farnell德国:电子元器件供应商
2018/07/10 全球购物
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
食品安全宣传标语
2014/06/07 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
男方婚礼答谢词
2015/01/20 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书