Angular ngClick 阻止冒泡和默认行为
2016-05-09 14:13
696 查看
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}); }); }); }; } }; }]; } );在上边代码我们可以得到两个信息:[/code]Angular支持的event: click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut pasteAngular在执行事件函数时候传入了一个名叫$event的常量,该常量即代表当前event对象,如果你在Angular之前引入了jQuery那么这就是jQuery的event.所以我们可以利用event的stopPropagation来阻止事件的冒泡:如下代码:jsbinhtml 代码:
<!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; }]);
相关文章推荐
- 【js类库AngularJs】解决angular+springmvc的post提交问题
- AngularJS控制器继承自另一控制器
- 如何使用AngularJs打造权限管理系统【简易型】
- AngularJs打造一个简易权限系统
- [后端人员耍前端系列]AngularJs篇:使用AngularJs打造一个简易权限系统
- ionic项目简介以及Angularjs 基础
- 《AngularJS》——scope的绑定策略
- AngularJS(2)——AngularJS数据双向绑定
- Angularjs【监听数据的变化】和【如何修改数据】和【数据变化的传播】
- AngularJS系列——目录结构
- 30分钟快速掌握AngularJs
- 浅谈angular中的promise
- [置顶] angularJS学习小结——filter
- [后端人员耍前端系列]AngularJs篇:30分钟快速掌握AngularJs
- 学习angularjs遇到的问题
- AngularJS(六)——过滤器
- Angularjs的理解和认识
- angular---常用指令总结
- angularjs中使用ng-repeat渲染最后一个li的时候设置不同样式
- angularJS directive详解