angular ngClick阻止冒泡使用默認(rèn)行為的方法
本文實(shí)例講述了angular ngClick阻止冒泡使用默認(rèn)行為的方法。分享給大家供大家參考,具體如下:
這其實(shí)是一個(gè)很簡(jiǎn)單的問(wèn)題,如果你認(rèn)真查看過(guò)Angular官方的API文檔,本來(lái)不想記錄的。但是這個(gè)問(wèn)題不止一次的被人問(wèn)起,所以今天在記錄在這里。
在Angular中已經(jīng)對(duì)一些ng事件如ngClick,ngBlur,ngCopy,ngCut,ngDblclick...中加入了一個(gè)變量叫做$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});
});
});
};
}
};
}];
}
);
在上邊代碼我們可以得到兩個(gè)信息:
①. Angular支持的event: click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste
②. Angular在執(zhí)行事件函數(shù)時(shí)候傳入了一個(gè)名叫$event的常量,該常量即代表當(dāng)前event對(duì)象,如果你在Angular之前引入了jQuery那么這就是jQuery的event.
所以我們可以利用event的stopPropagation來(lái)阻止事件的冒泡:如下代碼: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查看效果。
首先打開(kāi)你的控制臺(tái),然在沒(méi)選中Stop Propagation的情況下點(diǎn)擊button你將會(huì)看見(jiàn)兩條log記錄,相反選中后則只會(huì)出現(xiàn)button的log信息。
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
- AngularJS基礎(chǔ) ng-dblclick 指令用法
- AngularJS基礎(chǔ) ng-click 指令示例代碼
- ANGULARJS中用NG-BIND指令實(shí)現(xiàn)單向綁定的例子
- angularjs自定義ng-model標(biāo)簽的屬性
- AngularJS學(xué)習(xí)筆記之ng-options指令
- angularjs表格ng-table使用備忘錄
- angularjs在ng-repeat中使用ng-model遇到的問(wèn)題
- AngularJS基礎(chǔ) ng-include 指令示例講解
- AngularJS ng-change 指令的詳解及簡(jiǎn)單實(shí)例
- Angular.js回顧ng-app和ng-model使用技巧
- Angular ng-repeat 對(duì)象和數(shù)組遍歷實(shí)例
- AngularJS基礎(chǔ) ng-init 指令簡(jiǎn)單示例
相關(guān)文章
給angular加上動(dòng)畫效遇到的問(wèn)題總結(jié)
本文給大家總結(jié)了一下在angular中給ng-repeat列表加上動(dòng)畫效果時(shí)所遇到的問(wèn)題及解決方法,推薦給大家,希望大家能夠喜歡。2016-02-02
基于angular-utils-ui-breadcrumbs使用心得(分享)
下面小編就為大家?guī)?lái)一篇基于angular-utils-ui-breadcrumbs使用心得(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
詳解在 Angular 項(xiàng)目中添加 clean-blog 模板
本篇文章主要介紹了詳解在 Angular 項(xiàng)目中添加 clean-blog 模板,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-07-07
關(guān)于angularJs指令的Scope(作用域)介紹
下面小編就為大家?guī)?lái)一篇angularJs指令的Scope(作用域)介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
AngularJS基礎(chǔ) ng-src 指令簡(jiǎn)單示例
本文主要介紹AngularJS ng-src 指令,這里對(duì)ng-src 指令的資料做了詳細(xì)整理,有需要的小伙伴可以參考下2016-08-08
Angular使用$http.jsonp發(fā)送跨站請(qǐng)求的方法
這篇文章主要介紹了Angular使用$http.jsonp發(fā)送跨站請(qǐng)求的方法,結(jié)合實(shí)例形式分析了$http.jsonp發(fā)送跨站請(qǐng)求遇到的問(wèn)題與相應(yīng)的解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
使用Angular CLI進(jìn)行Build(構(gòu)建)和Serve詳解
這篇文章主要介紹了使用Angular CLI進(jìn)行Build(構(gòu)建)和Serve詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Angular Universal服務(wù)器端渲染避免 window is not&
這篇文章主要介紹了Angular Universal服務(wù)器端渲染避免 window is not defined錯(cuò)誤消息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解
這篇文章主要為大家介紹了Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

