如何在服务中进行http调用但得到控制器的响应? AngularJS

时间:2017-10-01 09:39:43

标签: javascript angularjs http

我有一个我称之为http的服务,问题是我不明白如何在控制器中使用$ scope.photos。如何配置控制器和服务来执行此操作?

   app.service('http',function($scope,$http){
      function getAll() {
        $http.get('/allphotos').then(function success(response) {
            $scope.photos = response.data;
        }, function error(err) {
            console.log('error is:' + err.err)
        });
    }
});

    app.controller('ctrl',function ($scope, http) {

}

1 个答案:

答案 0 :(得分:2)

首先,永远不要在Service / Factory / Provider中使用$scope。范围仅与控制器有关,a.e。处理绑定视图与控制器。

你有一个方法getAll()应该返回Promise,你将能够在你的控制器内解决它。

类似的东西:

app.service('httpService',function(,$http){
      this.getAll = function() {
        return $http.get('/allphotos').then(function(response) {
      //  ^ 'getAll' returns Original Promis comes from '$http'
            return response.data;
      //      ^  here we resolve 'response.data' 
        }, function(err) {
            console.log('error is:' + err.err)
        });
    }
});

现在在控制器中执行:

app.controller('ctrl',function ($scope, httpService) {
   httpService.getAll().then(function(data) {
            $scope.data = data;
        }, function error(err) {
            console.log('error is:' + err.err)
        });
}