gpt4 book ai didi

javascript - 在 $error 对象中获取 $q.reject() 错误信息

转载 作者:行者123 更新时间:2023-11-30 16:56:20 25 4
gpt4 key购买 nike

我有一个表单,当邮政编码不存在时,我使用 ng-show 显示或隐藏元素。

查看

<input type="text" name="postcode" placeholder="Postcode" ng-model="project.postcode" required integer postcode>    
<span ng-show="form.postcode.$error.postcode">That post code does not exist!</span>

邮政编码验证指令

  .directive('postcode', function($q, $timeout, ParseService) {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {

ctrl.$asyncValidators.postcode = function(modelValue, viewValue) {

var def = $q.defer();
ParseService.getRawObject(new Parse.Query("Zone")
.equalTo('postCode', parseInt(modelValue)).ascending('order')).then(function(results){

if(results.length == 1)
def.resolve();
else if(results.length > 1) {
def.reject('multiple');
scope.postcodeerror = 'multiple';
scope.postcodetowns = results;
}
else
def.reject();
});

return def.promise;
};
}
};

对于常规的解决和拒绝,一切都很好,但是当我用“多个”错误代码拒绝时,我想在 form.postcode 的 $error 对象中对其进行评估...

<span ng-show="form.postcode.$error.postcode=='multiple'">This post code has multiple suburbs assigned to it!</span>

有没有可能做这样的事情?还是我只需要在范围内设置一些东西?

谢谢

最佳答案

我检查过 Angular source code它根本不使用被拒绝的 promise 返回的数据。但您可以通过调用 $setValidity 自行完成此操作:

.then(function(results) {
scope.postcodetowns = results;
ctrl.$setValidity('postcode', results.length === 0);
ctrl.$setValidity('postcode_multiple', results.length > 1);
def.resolve();
}
return def.promise;

现在您可以将 form.postcode.$error.postcode_multiplengShow 一起使用:

<span ng-show="form.postcode.$error.postcode_multiple">
This post code has multiple suburbs assigned to it!
</span>

或者更好,使用 ngMessages:

<div ng-messages="form.postcode.$error">
<span ng-message="postcode">That post code does not exist!</span>
<span ng-message="postcode_multiple">This post code has multiple suburbs assigned to it!</span>
</div>

关于javascript - 在 $error 对象中获取 $q.reject() 错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29665537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com