При уеб формуляр за регистрация на потребител проверявам чрез ajax дали потребителско име вече съществува в DB. Когато потребителско име вече съществува, съответният input-text
ще премине в .has-error
клас.
редактиране
Промених атрибута ng-class на {'has-error':signup.userUnavaliable()}
, но въпреки че входът изглежда не получава такъв клас, с други думи текстът за въвеждане на пощата не става червен.
Поставям директивата в обвивката, тъй като това е начина, по който документите на Bootstrap я казват.
Ето как изглежда моят формуляр сега:
<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!");
})
}
}
})
Освен това се опитвам да деактивирам бутона и не постига такъв ефект, така че мисля, че моят контролер има някакъв проблем.