1

我看到以下用于调用服务器端资源的示例:

UserSession.prototype.$save = function() {
    return $http.post('/users/sign_in', {
      "user" : { 
        "email" : this.email,
        "password" : this.password,
        "remember_me" : this.remember_me ? 1 : 0 
      }   
    }); 
  };  

我的问题是,如果调用失败,是否可以在此代码中看到实际的错误响应?上面的内容将如何写?

4

3 回答 3

4

你错过了回调

UserSession.prototype.$save = function() {
    return $http.post('/users/sign_in', {
      "user" : { 
        "email" : this.email,
        "password" : this.password,
        "remember_me" : this.remember_me ? 1 : 0 
      }   
    })
    .success(function (data, status, headers, config) {
       // success logic here
    })
    .error(function (data, status, headers, config) {
       // error logic here
    });
}; 
于 2013-07-31T18:30:31.023 回答
2

您需要使用.error()回调参考

   UserSession.prototype.$save = function() {
        return $http.post('/users/sign_in', {
          "user" : { 
            "email" : this.email,
            "password" : this.password,
            "remember_me" : this.remember_me ? 1 : 0 
          }   
        }).error(function(data, status, headers, config) {
            // called asynchronously if an error occurs
            // or server returns response with an error status.
        });
  };  
于 2013-07-31T18:29:41.130 回答
1

您可以像其他答案所建议的那样在该函数中定义.success.error回调,但我觉得您更有可能希望调用 的应用程序代码.$save来确定成功或失败时完成的操作。

因此,您将保留该.$save功能,并且在您调用的应用程序中的任何地方myUserSession.$save(),您都可以执行以下操作:

myUserSession.$save()
   .success(function(data, httpStatus, header, config) {
       ...
   })
   .error(function(data, httpStatus, header, config) {
       ...
   });

这样做只会使代码更具可重用性。当然,如果您知道关于保存的事实,您希望在任何地方都具有完全相同的行为,那么就按照其他答案的建议去做。

于 2013-07-31T18:43:25.450 回答