欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

angular ngClick阻止冒泡使用默認(rèn)行為的方法

 更新時(shí)間:2016年11月03日 09:27:08   作者:破狼  
這篇文章主要介紹了angular ngClick阻止冒泡使用默認(rèn)行為的方法,較為詳細(xì)的分析了AngularJS中ngClick事件執(zhí)行原理與阻止冒泡的實(shí)現(xià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ì)有所幫助。

相關(guān)文章

  • Angualrjs和bootstrap相結(jié)合實(shí)現(xiàn)數(shù)據(jù)表格table

    Angualrjs和bootstrap相結(jié)合實(shí)現(xiàn)數(shù)據(jù)表格table

    這篇文章主要介紹了Angualrjs和bootstrap相結(jié)合實(shí)現(xiàn)數(shù)據(jù)表格table,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • Angular 4中如何顯示內(nèi)容的CSS樣式示例代碼

    Angular 4中如何顯示內(nèi)容的CSS樣式示例代碼

    這篇文章主要給大家介紹了關(guān)于Angular 4中如何顯示內(nèi)容的CSS樣式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 詳解AngularJS 過(guò)濾器的使用

    詳解AngularJS 過(guò)濾器的使用

    AngularJS 過(guò)濾器可用于轉(zhuǎn)換數(shù)據(jù),這篇文章主要介紹了詳解AngularJS 過(guò)濾器的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Angular.js中ng-if、ng-show和ng-hide的區(qū)別介紹

    Angular.js中ng-if、ng-show和ng-hide的區(qū)別介紹

    angularJS中的ng-show、ng-hide、ng-if指令都可以用來(lái)控制dom元素的顯示或隱藏。那么這篇文章就給大家主要介紹了Angular.js中ng-if、ng-show和ng-hide的區(qū)別,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • ng2學(xué)習(xí)筆記之bootstrap中的component使用教程

    ng2學(xué)習(xí)筆記之bootstrap中的component使用教程

    現(xiàn)在angular2已經(jīng)除了集成的angular-cli,建議大家可以基于這個(gè)來(lái)快速開(kāi)發(fā)ng2的項(xiàng)目,不用自己再搭建環(huán)境。接下來(lái)通過(guò)本文給大家介紹 bootstrap中的component使用教程,需要的朋友可以參考下
    2017-03-03
  • Angularjs中date過(guò)濾器失效的問(wèn)題及解決方法

    Angularjs中date過(guò)濾器失效的問(wèn)題及解決方法

    這篇文章主要介紹了Angularjs中date過(guò)濾器失效的問(wèn)題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • angularJS 指令封裝回到頂部示例詳解

    angularJS 指令封裝回到頂部示例詳解

    本篇文章主要介紹了angularJS 指令封裝回到頂部示例詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • angular雙向綁定模擬探索

    angular雙向綁定模擬探索

    這篇文章主要和大家一起探索模擬angular的雙向綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 如何用angularjs制作一個(gè)完整的表格

    如何用angularjs制作一個(gè)完整的表格

    本文給大家分享的是使用angularjs制作一個(gè)完整的表格的真實(shí)案例,結(jié)合前幾篇的內(nèi)容,把整個(gè)完整的代碼分享給大家,有需要的小伙伴可以參考下
    2016-01-01
  • Angular.JS中select下拉框設(shè)置value的方法

    Angular.JS中select下拉框設(shè)置value的方法

    select 是 AngularJS 預(yù)設(shè)的一組directive。下面這篇文章主要給大家介紹了關(guān)于Angular.JS中select下拉框設(shè)置value的方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06

最新評(píng)論