浅谈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 Ajax使用 全解析
Dec 15 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 Javascript
Javascript动画效果(4)
Oct 11 Javascript
Bootstrap显示与隐藏简单实现代码
Mar 06 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 Javascript
Angular 封装并发布组件的方法示例
Apr 19 Javascript
结合Vue控制字符和字节的显示个数的示例
May 17 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
Jul 05 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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/12/25 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
python中的print()输出
2019/04/12 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
python和php学习哪个更有发展
2020/06/17 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
HTML5有哪些新特征
2015/12/01 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
中间件分为哪几类
2012/03/14 面试题
银行会计业务的个人自我评价
2013/11/02 职场文书
会计毕业生自荐信
2013/11/21 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
护士旷工检讨书
2015/08/15 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
MySQL 数据库范式化设计理论
2022/04/22 MySQL