angular ngClick阻止冒泡使用默認行為的方法
本文實例講述了angular ngClick阻止冒泡使用默認行為的方法。分享給大家供大家參考,具體如下:
這其實是一個很簡單的問題,如果你認真查看過Angular官方的API文檔,本來不想記錄的。但是這個問題不止一次的被人問起,所以今天在記錄在這里。
在Angular中已經(jīng)對一些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在執(zhí)行事件函數(shù)時候傳入了一個名叫$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記錄,相反選中后則只會出現(xiàn)button的log信息。
希望本文所述對大家AngularJS程序設計有所幫助。
- AngularJS基礎 ng-dblclick 指令用法
- AngularJS基礎 ng-click 指令示例代碼
- ANGULARJS中用NG-BIND指令實現(xiàn)單向綁定的例子
- angularjs自定義ng-model標簽的屬性
- AngularJS學習筆記之ng-options指令
- angularjs表格ng-table使用備忘錄
- angularjs在ng-repeat中使用ng-model遇到的問題
- AngularJS基礎 ng-include 指令示例講解
- AngularJS ng-change 指令的詳解及簡單實例
- Angular.js回顧ng-app和ng-model使用技巧
- Angular ng-repeat 對象和數(shù)組遍歷實例
- AngularJS基礎 ng-init 指令簡單示例
相關文章
Angualrjs和bootstrap相結合實現(xiàn)數(shù)據(jù)表格table
這篇文章主要介紹了Angualrjs和bootstrap相結合實現(xiàn)數(shù)據(jù)表格table,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03Angular.js中ng-if、ng-show和ng-hide的區(qū)別介紹
angularJS中的ng-show、ng-hide、ng-if指令都可以用來控制dom元素的顯示或隱藏。那么這篇文章就給大家主要介紹了Angular.js中ng-if、ng-show和ng-hide的區(qū)別,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01ng2學習筆記之bootstrap中的component使用教程
現(xiàn)在angular2已經(jīng)除了集成的angular-cli,建議大家可以基于這個來快速開發(fā)ng2的項目,不用自己再搭建環(huán)境。接下來通過本文給大家介紹 bootstrap中的component使用教程,需要的朋友可以參考下2017-03-03Angular.JS中select下拉框設置value的方法
select 是 AngularJS 預設的一組directive。下面這篇文章主要給大家介紹了關于Angular.JS中select下拉框設置value的方法,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06