AngularJS 关注所有输入的焦点

AngularJS watch all inputs for focus

我想关注应用程序中所有 input 的焦点事件。

像这样:

$scope.$watch('input',function(e){
  if(e.focus){
    // do stuff
  }
});

知道如何做到这一点吗?

您不是在观看活动,而是在聆听。此外,弄乱 DOM 是指令的任务。因此,这个答案使用指令方法。您可以发出事件或在内部执行所有 "stuff"。

angular.module('app', [])
  .directive('input', function() {
    return {
      restrict: 'E',
      link: Link
    };

    function Link(scope, elem, attrs) {
      elem.on('focus', function() {
        // do stuff
        console.log(elem[0].name + ' has been focused!');
      });
    }
  });
<div ng-app="app">
  <label for="input1">input1</label>
  <input name="input1" type="text">
  <label for="input2">input2</label>
  <input name="input2" type="text">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>