如何使restangular promise顺序?

时间:2013-09-17 03:56:16

标签: angularjs angular-ui restangular

我正在尝试通过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”。

1 个答案:

答案 0 :(得分: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的支持。