最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angular ngClick阻止冒泡使用默認行為的方法

 更新時間:2016年11月03日 09:27:08   作者:破狼  
這篇文章主要介紹了angular ngClick阻止冒泡使用默認行為的方法,較為詳細的分析了AngularJS中ngClick事件執(zhí)行原理與阻止冒泡的實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了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程序設計有所幫助。

相關(guān)文章

最新評論

万载县| 高邮市| 札达县| 即墨市| 柯坪县| 阿勒泰市| 郁南县| 桦甸市| 铅山县| 江山市| 句容市| 沁水县| 迁安市| 本溪| 南京市| 明水县| 平湖市| 山西省| 定日县| 汶川县| 沙雅县| 邵东县| 呼伦贝尔市| 理塘县| 咸阳市| 八宿县| 六盘水市| 泸州市| 西青区| 东方市| 隆尧县| 太康县| 朔州市| 苍山县| 武城县| 寿宁县| 澜沧| 恩施市| 沧州市| 桃源县| 宜兰县|