I have angular validation and server side validation (like username taken). I am binding server errors to form elements.
$scope.registerFormSubmit = function()
{
if (isEmpty($scope.registerForm.$error))
{
$http({
url: '/profile/register',
method: 'POST',
dataType: 'json',
data: toArray($scope.form),
}).error(function(response){
if (false == is(response.formErrors)) return;
for (var k in $scope.registerForm)
{
if (!is(response.formErrors[k]))
{
try
{
$scope.registerForm[k].$error = {};
}catch(e){
}
continue;
}
else
{
$scope.registerForm[k].$error[response.formErrors[k]] = 1;
}
}
});
}
}
The problem is when user change model (ex. username) errors from server still exists after submit clicked. So, ajax can't be send because condition
isEmpty($scope.registerForm.$error)
Is always false because form has errors.