我正在尝试通过Restangular,Angular-ui-utils创建一个带有后端验证的表单,但我无法弄清楚如何在继续使用该函数之前强制Restangular promises完成,因此我的程序继续返回null值。
这是我的代码
HTML:
...
<form> <input name="name"
ng-model="name"
ui-validate="{uniqueName: 'uniqueName($value)'}">
Is name duplicated? {{form.name.$error.uniqueName}}</input>
</form>
...
使用Javascript:
...
function myCtrl($scope,Restangular) {
...
$scope.uniqueName(value) {
var checkResult;
Restangular.one('service').one('validate',value).get().then(function(result){
checkResult = result;
}
return checkResult;
}
...
}
Rest Serice输出非常简单,如果名称不在数据库中,则为“false”,如果是,则为“true”。
答案 0 :(得分:0)
由于验证唯一名称的调用是异步的。您无法通过返回checkResult
来实施。
$scope.uniqueName(value) {
return Restangular.one('service').one('validate',value).get();
}
这应该是我相信的承诺。如果您使用的是ui-validate
的正确版本,那么它应该可以正常运行。检查此提交https://github.com/angular-ui/angular-ui/issues/257,它在api中添加了对promise的支持。