0

我正在尝试通过 Restangular、Angular-ui-utils 制作一个带有后端验证的表单,但我不知道如何强制 Restangular 承诺在继续使用该函数之前完成,因此我的程序不断返回空值。

这是我的代码

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 输出非常直接,如果名称不在数据库中,则为“假”,如果在数据库中,则为“真”。

4

1 回答 1

0

由于验证唯一名称的调用是异步的。您无法通过返回来实施checkResult

ui-validate 我认为支持承诺。所以你返回类似的东西

$scope.uniqueName(value) {
   return Restangular.one('service').one('validate',value).get();
}

我相信这应该是一个承诺。如果您使用的是正确的版本,ui-validate那么它应该可以工作。检查此提交https://github.com/angular-ui/angular-ui/issues/257,它在 api 中添加了对 promise 的支持。

于 2013-09-17T05:34:19.273 回答