浅谈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中使用replaceAll()函数实现字符替换的方法
Dec 25 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
JQuery标签页效果的两个实例讲解(4)
Sep 17 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
JavaScript学习笔记--常用的互动方法
Dec 07 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
Feb 16 Javascript
Node.js 使用AngularJS的方法示例
May 11 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
Vue父子传递实例讲解
Feb 14 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 闭包特性在实际应用中的问题
2009/10/30 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
js实现返回顶部效果
2017/03/10 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
Angularjs的启动过程分析
2017/07/18 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python实现大文件排序的方法
2015/07/10 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
python实现redis三种cas事务操作
2017/12/19 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
python变量的存储原理详解
2019/07/10 Python
python logging添加filter教程
2019/12/24 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
2014年技术工作总结范文
2014/11/20 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript