AngularJS事件
时间:2020-01-09 10:34:01 来源:igfitidea点击:
AngularJS事件处理简介
创建更高级的AngularJS应用程序时,应用程序迟早需要处理DOM事件,例如鼠标单击,移动,键盘按下,更改事件等。AngularJS有一个简单的模型,用于将事件侦听器添加到从视图生成的HTML 。本文将解释此模型。
在深入探讨事件之前,让我向我们展示一个简单的AngularJS应用程序,我们将以该文本示例为基础:
<!DOCTYPE html> <html lang="en"> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script> </head> <body ng-app="myapp"> <div ng-controller="MyController" > </div> <script> angular.module("myapp", []) .controller("MyController", function($scope) { $scope.myData = {}; } ); </script> </body> </html>
AngularJS事件侦听器指令
我们可以使用AngularJS事件监听器指令之一将事件监听器添加到HTML元素:
- ng-click
- ng-dbl-click
- ng-mousedown
- ng-mouseup
- ng-mouseenter
- ng-mouseleave
- ng-mousemove
- ng-mouseover
- ng-keydown
- ng-keyup
- ng-keypress
- ng-change
AngularJS事件侦听器示例
这是一个简单的AngularJS事件侦听器指令示例:
<div ng-controller="MyController" > <div ng-click="myData.doClick()">Click here</div> </div> <script> angular.module("myapp", []) .controller("MyController", function($scope) { $scope.myData = {}; $scope.myData.doClick = function() { alert("clicked"); } } ); </script>
当我们单击上面示例的内部div
时,将调用myData.doClick()
函数。如我们在控制器函数中看到的那样,myData对象添加了一个doClick()函数。
如我们所见,将事件添加到HTML DOM元素与首先生成HTML并没有太大区别。调用的事件侦听器函数是由控制器函数添加到$ scope对象中的函数。
事件监听器指令有一个名为$ event的特殊变量,我们可以将其用作事件监听器函数的参数。 $ event变量包含原始的浏览器事件对象。这是一个例子:
<div ng-controller="MyController" > <div ng-click="myData.doClick($event)">Click here</div> </div> <script> angular.module("myapp", []) .controller("MyController", function($scope) { $scope.myData = {}; $scope.myData.doClick = function(event) { alert("clicked: " + event.clientX + ", " + event.clientY); } } ); </script>
我们还可以将其他参数传递给事件侦听器函数。这是一个将事件侦听器功能添加到li
元素列表中的示例:
<div ng-controller="MyController" > <ul> <li ng-repeat="item in myData.items" ng-click="myData.doClick(item, $event)">Click here</li> </ul> </div> <script> angular.module("myapp", []) .controller("MyController", function($scope) { $scope.myData = {}; $scope.myData.items = [{ v: "1"}, { v: "2"}, { v : "3"} ]; $scope.myData.doClick = function(item, event) { alert("clicked: " + item.v + " @ " + event.clientX + ": " + event.clientY); } } ); </script>
这个例子遍历一个项目列表,从它们中生成li
元素,并向每个li
元素添加点击监听器。随同对点击侦听器的调用一起传递了" item" JavaScript对象,并基于" click"对象($ event
)生成了" li"元素所基于的对象。