angular 1.6.1来自服务的http请求

时间:2017-01-19 16:29:06

标签: angularjs

angular 1.6.1已移除.success.error服务$http以使用.then.catch。 现在我的回答是: 我编写代码是否合理?因为现在我对控制器如何与服务进行交谈感到困惑

我有一个登录控制器(例子): 的 LoginCTRL

User.login(data).then(
   function(response){ 
      //do something    
   },function(err){
     //do somethig
});

我有用户服务

myapp.service('User', function User($q, $http) {
    return {
            login: function(credentials){
                return $http.post('login',{data:data}).then(function onSuccess(response) {
                    return response;
                }).catch(function onError(response){
                    return response;
                });
            },
}

在控制器中写 service.method()。然后是正确的,现在不再有$q.defer().resolve(data)$q.defer().reject(reason)

1 个答案:

答案 0 :(得分:0)

尝试:

myapp.service('User', function User($q, $http) {
      return {
        login: function(credentials) {
          var deferred = $q.defer();
          $http.post('login', {
            data: data
          }).then(onSuccess, onFailure);

          function onSuccess(response) {
            deferred.resolve(response);
          }

          function onFailure(response) {
            deferred.reject(response);
          }
          return deferred.promise;
        }
      }
    }