2017-06-29 3 views
1

私はアプリケーション内のすべてのinputでフォーカスイベントを監視したいと思っています。このようなAngularJSはすべての入力フォーカスを監視します

何か:

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

これを行うことができますどのように任意のアイデア?

+0

あなたはinput要素またはスコープ変数のウォッチを設定していますか? – HARI

答えて

2

あなたはイベントを見ないでください。あなたはそれを聞きます。また、DOMを混乱させることは、指令の仕事です。したがって、この回答では、ディレクティブ・アプローチを使用します。あなたはイベントを出すことも、すべての「もの」を内部的に行うこともできます。

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>

+0

完璧!これはまさに私が探していたものです。 – Matt

関連する問題