在客户端返回角度承诺。没有服务器往返

时间:2014-12-16 19:27:20

标签: angularjs angularjs-http

我在我的项目中使用了角度xeditable。

我在网格中使用了角度可编辑的行组件。

我知道

如果我使用

   return  $http.post('api/students',model).sucess(function(data) {

 })
.error(function(data) {
 }) ;

据我所知,会发生什么 - 上面的代码会调用学生CONTROLLER post方法web api ...如果它返回OK,成功将被执行n返回别的错误将被执行n返回......

但我的问题是 - 我可以从javascript本身调用.error调用....

让我们说

 if( textbox == "") 

       return $http.post().error().......

  else

        return $http.post().sucess()....

为什么我想要这样的东西?

因为对于单个文本框,我必须进行服务器旅行以检查它是否为空。如果它不是空的,我返回OK()否则我返回(让我们说)NotFound()...

确定将执行成功通话 NotFound将执行错误调用...

所以在js方面,如果我检查字符串是否为空。
如果强行空(没有服务器旅行),我想“返回”#39; .error回调....

是不是有可能????????????

$ http.post将使服务器旅行。我知道。但是在客户端,如果我想强有力地返回错误承诺呢?

2 个答案:

答案 0 :(得分:0)

如果您不想在没有有效输入的情况下发出HTTP请求,只需在执行任何操作之前检查输入。像这样:

if(<valid input>) {
  return  $http.post('api/students',model)
  .success(function(data) {

  })
  .error(function(data) {

  }) ;
} else {
  // don't do request
}

答案 1 :(得分:0)

您可以使用$q库来拒绝承诺。

要返回错误承诺:

angular.module(....)
  .service('myService', ['$q', '$http', ....,
     function($q, $http, ....) {
        ...
        this.myFunction = function(data) {

          if (isValid(data)) {
            return $http.post(....);
          } else {
            return $q.reject("rejection message");
          }

        };
        ...
     }]);