如何验证带有承诺的ng-tags-input?

时间:2016-08-24 07:02:03

标签: angularjs ng-tags-input

尝试通过调用服务器端api来验证添加的标记。以下是代码。

 <tags-input ng-model="user.trucks" 
             add-on-space="true" 
             on-tag-adding="checkTruck($tag)">
 </tags-input>

在我写的控制器中,

$scope.checkTruck = function(tag){
  var x = $q.defer();

  someService.checkTruck(tag).then(function(response){
      x.resolve(true);
  }, function(response){
      x.reject(false);
  });

  return x.promise; 
};

虽然文档说明标签添加可以承诺并验证添加的标签,但它并不是那样工作的。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您确实需要从Raises an error if the Database Engine cannot determine the metadata for the first query that will be executed by performing a static analysis.resolve处理程序返回值?

reject

然后我们可以删除您在那里完成的the explicit promise construction并返回一个已解决或被拒绝的承诺,该承诺将保留您的布尔值而不包含延迟对象。

$scope.checkTruck = function(tag){
    var deferred = $q.defer();

    someService.checkTruck(tag).then(function(response){
        return deferred.resolve(true);
    }, function(response){
        return deferred.reject(false);
    });

    return x.promise; 
};

这就是我的验证方式

有关$scope.checkTruck = function(tag){ return someService.checkTruck(tag).then(function(response){ return $q.when(true); }, function(response){ return $q.reject(false); }); }; 的更多信息,请参阅$q docs