Angularjs angular 1.6.1来自服务的http请求

Angularjs angular 1.6.1来自服务的http请求,angularjs,Angularjs,angular 1.6.1已删除.success和.error在服务中$http以供使用。然后和.catch。 现在我的答案是: 我在代码中编写代码是有意义的吗?因为现在我对控制器如何与服务对话感到困惑 我有一个用于登录的控制器(示例): LoginCTRL User.login(data).then( function(response){ //do something },function(err){ //do somethig }); 我有用户

angular 1.6.1
已删除
.success
.error
在服务中
$http
以供
使用。然后
.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()。解析(数据)
$q.defer()。拒绝(原因)
尝试:

myapp.service('User',函数用户($q,$http){
返回{
登录:功能(凭证){
var deferred=$q.deferred();
$http.post('login'{
数据:数据
})。然后(成功,失败);
函数onSuccess(响应){
延迟。解决(响应);
}
功能失效(响应){
拒绝(回应);
}
回报。承诺;
}
}

}
您没有在登录功能行
$http.post('login',{data:data})
中使用
凭据
,而且您只需返回
$http.post('login',{data:credentials})
是的,对不起,我的答案不是关于代码,而是关于逻辑,它是可以使用的。然后在控制器中调用它后投入使用?不确定,我认为
用户。登录(数据)
最终将返回请求的响应。也就是说,我找不到添加
的理由。然后(回调)
。谢谢korte,但是如果我想在controller After response service中做些什么的话?例如,我会在viewYes中立即通知用户。返回$http承诺给您的控制器使用
。然后()
。所以您应该只返回
$http.post('login',{data:credentials})
,这是一个好方法。这是。