angular ngClick阻止冒泡使用默认行为的方法


Posted in Javascript onNovember 03, 2016

本文实例讲述了angular ngClick阻止冒泡使用默认行为的方法。分享给大家供大家参考,具体如下:

这其实是一个很简单的问题,如果你认真查看过Angular官方的API文档,本来不想记录的。但是这个问题不止一次的被人问起,所以今天在记录在这里。

在Angular中已经对一些ng事件如ngClick,ngBlur,ngCopy,ngCut,ngDblclick...中加入了一个变量叫做$event.

如ngClick在官方文档是这么描述的:

Expression to evaluate upon click. (Event object is available as $event)

在查看Angular代码ngEventDirs.js:

var ngEventDirectives = {};
forEach(
   'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
   function(name) {
    var directiveName = directiveNormalize('ng-' + name);
    ngEventDirectives[directiveName] = ['$parse', function($parse) {
     return {
      compile: function($element, attr) {
       var fn = $parse(attr[directiveName]);
       return function(scope, element, attr) {
        element.on(lowercase(name), function(event) {
         scope.$apply(function() {
          fn(scope, {$event:event});
         });
        });
       };
      }
     };
    }];
   }
);

在上边代码我们可以得到两个信息:

①. Angular支持的event: click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste

②. Angular在执行事件函数时候传入了一个名叫$event的常量,该常量即代表当前event对象,如果你在Angular之前引入了jQuery那么这就是jQuery的event.

所以我们可以利用event的stopPropagation来阻止事件的冒泡:如下代码:jsbin

html 代码:

<!DOCTYPE html>
<html id="ng-app" ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body ng-controller="demo as d">
<div ng-click="d.click('parent',$event)">
given some text for click
<hr>
<input type="checkbox" ng-model="d.stopPropagation" />Stop Propagation ?
<hr>
<button type="button" ng-click="d.click('button',$event)">button</button>
</div>
</body>
</html>

js 代码:

angular.module("app",[])
.controller("demo",[function(){
 var vm = this;
 vm.click = function(name,$event){
  console.log(name +" -----called");
  if(vm.stopPropagation){
   $event.stopPropagation();
  }
 };
 return vm;
}]);

可以在jsbin查看效果。

首先打开你的控制台,然在没选中Stop Propagation的情况下点击button你将会看见两条log记录,相反选中后则只会出现button的log信息。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
初窥JQuery(二) 事件机制(1)
Nov 25 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
Jan 26 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
Mar 30 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 Javascript
使用js实现一个简单的滚动条过程解析
Sep 10 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
Dec 24 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
vue.js指令v-for使用及索引获取
Nov 03 #Javascript
vue.js初学入门教程(1)
Nov 03 #Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 #Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 #Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 #Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 #Javascript
微信小程序  audio音频播放详解及实例
Nov 02 #Javascript
You might like
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
php遍历数组的方法分享
2012/03/22 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python任务调度实例分析
2015/05/19 Python
python简单实现获取当前时间
2016/08/27 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
python中logging包的使用总结
2018/02/28 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
广告词串烧
2014/03/19 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
清洁工个人工作总结
2015/03/05 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
《春酒》教学反思
2016/02/22 职场文书
简历自我评价范文
2019/04/24 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers