我发现自己在Angular服务中做了很多这样的事情:
getStats: function() {
var deferred = $q.defer();
$http.get('/stats').success(function(stats) {
deferred.resolve(stats);
});
return deferred.promise;
}
请注意,我正在返回的承诺会解析为返回的数据。这不是我可以使用.success
回调的情况。
有没有一种更简单的方法可以在不使用$q
的情况下执行此操作?
答案 0 :(得分:2)
这应该有效,因为$http.get
会返回promise对象,
getStats: function() {
return $http.get('/stats');
}
在您的代码中,您可以像这样使用它:
someService.getStats().success(successFN);
答案 1 :(得分:0)
创建API服务:
app.factory('apiService', ['$http', function($http) {
'use strict';
return {
getStats: function (deviceId) {
return $http.get('/stats');
}
}
}
然后在控制器中注入apiCall并使用getStats
方法。
app.controller("MyController", ['$scope', 'apiService', '$routeParams', function($scope, apiService, $routeParams) {
'use strict';
angular.extend($scope, {
info: {},
deviceId: $routeParams.deviceId,
loadInfo: function () {
apiService
.getStats($scope.deviceId)
.succes(function (res, statusCode) {
$scope.info = res;
})
.error(function () {
alert('Oh NOS!');
})
}
});
$scope.loadInfo();
}]);