AngularJS 事件

AngularJS 有自己的 HTML 事件指令。


AngularJS 事件

您可以使用一个或多个指令将 AngularJS 事件监听添加到 HTML 元素中:

  • ng-blur
  • ng-change
  • ng-click
  • ng-copy
  • ng-cut
  • ng-dblclick
  • ng-focus
  • ng-keydown
  • ng-keypress
  • ng-keyup
  • ng-mousedown
  • ng-mouseenter
  • ng-mouseleave
  • ng-mousemove
  • ng-mouseover
  • ng-mouseup
  • ng-paste

事件指令允许我们在某些用户事件中运行 AngularJS 函数。

AngularJS 事件不会覆盖 HTML 事件,两个事件都会执行。


鼠标事件

鼠标事件在光标按以下顺序移动到元素上时发生:

  • ng-mouseover
  • ng-mouseenter
  • ng-mousemove
  • ng-mouseleave

或者当鼠标按钮按以下顺序单击某个元素时:

  • ng-mousedown
  • ng-mouseup
  • ng-click
您可以在任何 HTML 元素上添加鼠标事件。
实例

当鼠标移动到 h1 元素上时,增加计数变量:

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. <h1 ng-mousemove="count = count + 1">鼠标放到这里!</h1>
  7. <h2>{{ count }}</h2>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('myCtrl', function($scope) {
  12. $scope.count = 0;
  13. });
  14. </script>
  15. </body>
  16. </html>

ng-click 指令

ng-click 指令定义了点击元素时将执行的 AngularJS 代码。

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. <button ng-click="count = count + 1">Click Me!</button>
  7. <p>{{ count }}</p>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('myCtrl', function($scope) {
  12. $scope.count = 0;
  13. });
  14. </script>
  15. </body>
  16. </html>

你也可以引用一个函数:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. <button ng-click="myFunction()">点击一下!</button>
  7. <p>{{ count }}</p>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('myCtrl', function($scope) {
  12. $scope.count = 0;
  13. $scope.myFunction = function() {
  14. $scope.count++;
  15. }
  16. });
  17. </script>
  18. </body>
  19. </html>

Toggle, True/False

如果希望在单击按钮时显示 HTML 代码的一部分,并在再次单击按钮时隐藏(如下拉菜单),请使按钮的行为类似于切换开关(Toggle):

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. <button ng-click="myFunc()">点击一下!</button>
  7. <div ng-show="showMe">
  8. <h2>Menu:</h2>
  9. <div>Pizza</div>
  10. <div>Pasta</div>
  11. <div>Pesce</div>
  12. </div>
  13. </div>
  14. <script>
  15. var app = angular.module('myApp', []);
  16. app.controller('myCtrl', function($scope) {
  17. $scope.showMe = false;
  18. $scope.myFunc = function() {
  19. $scope.showMe = !$scope.showMe;
  20. }
  21. });
  22. </script>
  23. <p>单击按钮以显示/隐藏菜单。</p>
  24. </body>
  25. </html>

showMe 变量以布尔值 false 开始。

myFunc 函数通过使用 ! 操作符将 showMe 变量设置为与其相反的值。


$event 对象

调用函数时,可以将 $event 对象作为参数传递。

$event 对象包含浏览器的事件对象:

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. <h2 ng-mousemove="myFunc($event)">鼠标放到这里!</h2>
  7. <p>Coordinates: {{x + ', ' + y}}</p>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('myCtrl', function($scope) {
  12. $scope.myFunc = function(myE) {
  13. $scope.x = myE.clientX;
  14. $scope.y = myE.clientY;
  15. }
  16. });
  17. </script>
  18. <p>将鼠标悬停在标题上,以显示事件对象中 clientX 和 clientY 的值。</p>
  19. </body>
  20. </html>

分类导航