В веб-форме регистрации пользователя я проверяю через ajax, существует ли уже имя пользователя в БД. Когда имя пользователя уже существует, соответствующий input-text
класс будет .has-error
.
Редактировать
Я изменил атрибут ng-class на {'has-error':signup.userUnavaliable()}
, но даже несмотря на то, что ввод, по-видимому, не получает такой класс, другими словами, текст ввода почты не становится красным.
Я помещаю директиву в оболочку, так как это указано в Bootstrap docs.
Вот как сейчас выглядит моя форма:
<form class="form-inline" role="form">
<div class="form-group" ng-class="{'has-error':signup.userUnavaliable()}">
<input type="email" class="form-control input-lg" ng-model="signup.mail" placeholder="e-mail" ng-change="signup.userExists(signup.mail)">
</div>
<div class="form-group">
<input type="password" class="form-control input-lg" placeholder="Contraseña" ng-nodel="signup.password">
</div>
<div class="checkbox">
<label>
<input type="checkbox" ng-model="signup.role" value="admin"> Administrador
</label>
</div>
<button type="submit" class="btn btn-primary" ng-disabled="signup.unavaliable">Registrar</button>
</form>
А это мой контроллер:
app.controller('SignUpController',function ($scope, $http) {
$scope.userUnavaliable = function() {
return $scope.unavaliable
}
$scope.print = function(msg) {
console.log(msg)
}
this.userExists = function(mail) {
if (mail) {
var who = $http.get("/existingUsers/"+mail)
who.success(function(data,status, headers, config) {
if (data.mail) {
$scope.unavaliable = true
console.log(data.mail + " ya existe en la DB")
}
else{
$scope.unavaliable = false
}
});
who.error(function(data, status, headers, config) {
alert("AJAX failed!");
})
}
}
})
Кроме того, я пытаюсь отключить кнопку, и это не дает такого эффекта, поэтому я думаю, что у моего контроллера есть проблема.