angularjsを使用し、次のような通常の入力フィールドを作成しました:
<input type="text" style="border: none" ng-model="model" >
私は次のことをしたい:
誰かが入力フィールドをクリックすると、たとえばメソッドAを呼び出す必要があります。次に、このフィールドにテキストを書き込み、ユーザーがページのどこかをクリックして入力フィールドがフォーカスされなくなった場合、メソッドBを呼び出します。アンギュラーjsで?はいの場合、どうすればいいですか? ng-focusは入力イベントでのみアクティブになり、出力ではアクティブになりません。
私はこれで何かをロックしたい、メソッドAは値のみをtrueに設定し、メソッドBは同じ値をfalseに設定します。しかし、入力フィールドがアクティブであるときとそうでないときを知る必要があります。
アプリケーション全体のフィールドに適用したい機能を使用している場合は、それをディレクティブに入れることができます。フィールドのフォーカスまたはぼかしに基づいてcssクラスを追加および削除する例を次に示します。
angular.module('myApp').directive('inputFocus', function () {
var FOCUS_CLASS = 'input-focused';
return {
restrict: 'A',
priority: 1,
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
element.bind('focus',function () {
element.parent().addClass(FOCUS_CLASS);
}).bind('blur', function () {
element.parent().removeClass(FOCUS_CLASS);
});
}
};
});
メソッドBをアンギュラーのng-blurディレクティブにバインドして、入力がフォーカスを失ったことを検出できます
<input type='text' ng-focus='methodA()' ng-blur='methodB()' ng-model='model'>