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)
答案 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;
}
}
}