サービスで任意の入力フィールドを処理できるようにしたいと考えています。現時点で私は手作業ですべてを書いており、多くの手作業になり始めています。要素の変更プロパティが呼び出されたときに要素オブジェクトを送信する方法はありますか?その結果、ng-class要素を変更することができます。サービスを使用して、変更時にng-classを更新する
HTML:コントローラで
<input type="text" id="email" data-ng-model="email" data-ng-change="changeEmail()" placeholder="your email here" data-ng-class="emailFormControlColor">
:
$scope.changeEmail = function() {
if ($checkInput.checkEmail($scope.email)) {
// email input is good
$scope.emailFormControlColor = 'form-control-success'; // change from error to success
} else {
// email input is bad
if ($scope.emailFormControlColor === 'form-control-success')
$scope.emailFormControlColor = 'form-control-error'; // change from success to error
}
};
サービス(これはOFCコントローラの引数に含まれている。):
.service('checkInput', ['$controller', '$window', '$location', function ($controller, $window, $location) {
return {
checkEmail: function (email) {
// <--- I would like to update the ng-class of the focused element here! This would result in me not manually having to write code for each input!
var regex = /^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]+$/;
return regex.test(email);
}
};
}])
上記のコードはどのようです私は今それを持っています。ご覧のとおり、私は手動で$ scope.emailFormControlColorを変更しています。 、私は私の質問は明らかであると思います
$scope.emailFormControlColor1 = 'form-control-success';
$scope.emailFormControlColor2 = 'form-control-success';
$scope.emailFormControlColor3 = 'form-control-success';
:私は手動で次のように書く必要がないように、私は私のサービスを書くことができる方法
<input type="text" id="email1" data-ng-model="email1" data-ng-change="changeEmail()" placeholder="your email here" data-ng-class="emailFormControlColor1">
<input type="text" id="email2" data-ng-model="email2" data-ng-change="changeEmail()" placeholder="your email here" data-ng-class="emailFormControlColor2">
<input type="text" id="email3" data-ng-model="email3" data-ng-change="changeEmail()" placeholder="your email here" data-ng-class="emailFormControlColor3">
:
は、私は三つの入力フィールドを持っている想像してみてそうでなければ、私はそれを更新します!