-1
カスタムディレクティブを使用して非同期検証を実装しようとしています。AngularJS - カスタムディレクティブを挿入すると、フォームが無効に変更されました
あなたはルートユーザ名が入力されたときに、このユーザ名であるため、戻りはJSONオブジェクトで見ることができるようにこれは、コンソール
でディレクティブ
moduloArea.directive('uniqueName', function($http, $q) {
return {
require : 'ngModel',
link: function($scope, element, attrs, ngModel) {
ngModel.$asyncValidators.nombre = function(modelValue, viewValue) {
return $http.get('/checkUsernameAvailability/'+viewValue).then(
function(response) {
if (!response.data.validUsername) {
return $q.reject(response.data.errorMessage);
}
return true;
}
);
};
}
};
});
結果であり、使用中。
しかし、HTMLには、directive unique-nameが挿入されたときの$が無効です。
Attribute name "data-unique-name" associated with an element type "input" must be followed by the ' = ' character.
あなたは何を:私がない場合、次のエラーが発生しthymeleafので
<form name="registerUsernameForm" novalidate="novalidate">
<input type="text" name="username" data-ng-model="person.userName" data-unique-name="" required="required"/>
<span data-ng-show="registerUsernameForm.username.$error.uniqueName">This username is already taken.</span>
<button type="submit" data-ng-disabled="registerUsernameForm.$invalid || registerUsernameForm.$pending" data-ng-click="registerPerson(person)"> Save Person </button>
</form>
私は、データ固有名=「」(=「」)を使用しています考えて間違っていると思いますか?
感謝の男私は本当にこれでnoobのと私は以降「を解決機能(応答)」から迷ってしまいました8.だように、あなたは私にこのディレクティブを説明するだろう。 – wilson
はコードを消去するための単なる名前です。あなたはあなたが望むものを設定することができます。 $ http約束は基本的に2コールバックです。最初は成功し、2番目にエラーが発生する可能性があります。残りのAPIが2XXステータスを返すとき、これは成功であることを意味します。 4XXはクライアントエラー、5XXはサーバーエラーです。つまり、名前が存在しない場合はエラーをスローすることができます。これは検証の成功を意味します。 –