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 指令簡單示例
相關(guān)文章
基于angular-utils-ui-breadcrumbs使用心得(分享)
下面小編就為大家?guī)硪黄赼ngular-utils-ui-breadcrumbs使用心得(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
詳解在 Angular 項目中添加 clean-blog 模板
本篇文章主要介紹了詳解在 Angular 項目中添加 clean-blog 模板,非常具有實用價值,需要的朋友可以參考下2017-07-07
關(guān)于angularJs指令的Scope(作用域)介紹
下面小編就為大家?guī)硪黄猘ngularJs指令的Scope(作用域)介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
Angular使用$http.jsonp發(fā)送跨站請求的方法
這篇文章主要介紹了Angular使用$http.jsonp發(fā)送跨站請求的方法,結(jié)合實例形式分析了$http.jsonp發(fā)送跨站請求遇到的問題與相應的解決方法,具有一定參考借鑒價值,需要的朋友可以參考下2017-03-03
使用Angular CLI進行Build(構(gòu)建)和Serve詳解
這篇文章主要介紹了使用Angular CLI進行Build(構(gòu)建)和Serve詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
Angular Universal服務器端渲染避免 window is not&
這篇文章主要介紹了Angular Universal服務器端渲染避免 window is not defined錯誤消息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Angular6實現(xiàn)拖拽功能指令drag實例詳解
這篇文章主要為大家介紹了Angular6實現(xiàn)拖拽功能指令drag實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11

