Javascript AngularJS ng fab表单的服务器错误
我在AngularJS端和服务端使用验证(例如用于重复值检查),并希望向用户公开这些错误。如果没有,我可以构建自定义服务器错误指令,并像这样使用它:Javascript AngularJS ng fab表单的服务器错误,javascript,angularjs,forms,validation,Javascript,Angularjs,Forms,Validation,我在AngularJS端和服务端使用验证(例如用于重复值检查),并希望向用户公开这些错误。如果没有,我可以构建自定义服务器错误指令,并像这样使用它: <input type="number" id="level" name="level" ng-model="vm.record.level" server-error required> <div ng-messages="vm.form.role_level.$error"> <p ng-message
<input type="number" id="level" name="level" ng-model="vm.record.level"
server-error
required>
<div ng-messages="vm.form.role_level.$error">
<p ng-message="server">{{ vm.errors.level }}</p>
</div>
我自定义显示服务器错误消息,但无法显示动态错误文本。我想问题与范围继承有关。有什么办法可以达到预期的效果吗?我刚刚找到了一种方法: 添加自定义属性,以保存服务器错误消息值并查看其中的错误
<input type="number" id="level" name="level" ng-model="vm.record.level"
validation="{{ vm.errors.level }}
server-error
required>
我刚刚找到了一种方法:
添加自定义属性,以保存服务器错误消息值并查看其中的错误
<input type="number" id="level" name="level" ng-model="vm.record.level"
validation="{{ vm.errors.level }}
server-error
required>
我建议使用$asyncValidators而不是$SetValidationangular@1.3.2开
app.directive('username', function($q, $timeout) {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
var usernames = ['Jim', 'John', 'Jill', 'Jackie'];
ctrl.$asyncValidators.username = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
// consider empty model valid
return $q.when();
}
var def = $q.defer();
$timeout(function() {
// Mock a delayed response
if (usernames.indexOf(modelValue) === -1) {
// The username is available
def.resolve();
} else {
def.reject();
}
}, 2000);
return def.promise;
};
}
};
});
(示例取自
然后,您可以将消息添加到自己的验证模板中:
angular.module('exampleApp', [
'ngFabForm'
])
.config(function (ngFabFormProvider)
{
ngFabFormProvider.extendConfig({
validationsTemplate : 'path/to/your-fabulous-validation-template.html'
});
});
并在模板中添加:
<li ng-message="username">I'm not valid!!! ;(</li>
我无效;(
模块的github页面上也有一个问题:
对于一个更干净的解决方案,必须有一个接口,它还不存在,但您可以随时使用。我建议使用$asyncValidators而不是$SetValidationangular@1.3.2开
app.directive('username', function($q, $timeout) {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
var usernames = ['Jim', 'John', 'Jill', 'Jackie'];
ctrl.$asyncValidators.username = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
// consider empty model valid
return $q.when();
}
var def = $q.defer();
$timeout(function() {
// Mock a delayed response
if (usernames.indexOf(modelValue) === -1) {
// The username is available
def.resolve();
} else {
def.reject();
}
}, 2000);
return def.promise;
};
}
};
});
(示例取自
然后,您可以将消息添加到自己的验证模板中:
angular.module('exampleApp', [
'ngFabForm'
])
.config(function (ngFabFormProvider)
{
ngFabFormProvider.extendConfig({
validationsTemplate : 'path/to/your-fabulous-validation-template.html'
});
});
并在模板中添加:
<li ng-message="username">I'm not valid!!! ;(</li>
我无效(
模块的github页面上也有一个问题:
对于一个更干净的解决方案,必须有一个接口,它还不存在,但您可以一直使用。然而,我希望有一个更干净的解决方案,而不是为每个字段创建另一个观察者……然而,我希望有一个更干净的解决方案,而不是为每个字段创建另一个观察者……而这是一个有效的ap方法是,我不尝试只使用自定义服务器验证(如唯一性检查)。我还尝试处理一些情况,例如,我忘记在html输入上设置maxlength,服务器验证失败,错误是该值太长。虽然这是一种有效的方法,但我不尝试只使用自定义服务器验证(如唯一性检查)。我还尝试处理一些情况,例如,我忘记在html输入上设置maxlength,服务器验证失败,错误是该值太长。