角度:操纵事件触发顺序 - 即ng-blur& NG-点击?

时间:2014-08-14 09:09:04

标签: angularjs events

我有两个html元素:<aleph><beth>。元素<aleph>具有ng-blur属性,元素<beth>具有ng-click属性。

如果我专注于el <aleph>并点击<beth>,则会显示(根据实验)ng-blur将首先触发,ng-click将触发。

http://jsfiddle.net/UTn5y/70/

  1. 这总是行为吗?
  2. 我可以不加努力地改变这种行为吗?

1 个答案:

答案 0 :(得分:3)

  1. 这总是行为吗?
  2. 是的,模糊事件将始终首先触发

    1. 我可以不加努力地改变这种行为吗?
    2. 不,你不能改变行为。但是,您可以手动管理它。您可以在ng-blur回调中使用$ timeout,并检查可以通过ng-click操作的变量。

      function ngClick () {
          $scope.clicked = true;
          // rest of your code
      }
      
      function ngBlur () {
          $scope.clicked = false;
          $timeout(function () { // will be executed after ngClick function in case of click
              if ($scope.clicked) {
                  return;
              }
      
              // rest of your code
          })
      }
      

      这是一个工作版本: http://jsfiddle.net/zhfew91j/2/