AngularJS $ http工厂不能正常工作

时间:2014-09-04 16:44:52

标签: angularjs

我猜$http.get部分不起作用。 这是我的代码:

.controller('home', function($scope, request){
            $scope.list = request.get(baseUrl);
    })
.factory('request', function($http){
        var get = function(url){
            $http.get(url).success(function(data){
                console.log(data); 
                return data; //returns nothing
            });
        }

        return {
            get : get
        }
    });

2 个答案:

答案 0 :(得分:3)

试试这个。

.factory('request', function($http){
    var get = function(url){
        return $http.get(url).success(function(data){
            return data;
        });
    }

    return {
        get : get
    }
});

更新您的控制器。

request.get(url).then(function (data) {

  $scope.data = data;

}, function (response) {
     // handle error
});

http://plnkr.co/edit/eWXckgiwPNCGMlP0LQyk?p=preview

答案 1 :(得分:1)

一般来说,你的函数根本不会返回任何内容 - 如果我要调用request.get(),它将返回undefined。你想要像

这样的东西
.controller('home', function($scope, request){
    request.get(baseUrl).then(function(data){ // I prefer then and catch semantics
        $scope.list = data;                   // as they're standard promises form
    })['catch'](function (err){console.log(err)});
})
.factory('request', function($http){
    var get = function(url){
        return $http.get(url).then(function(data){
            console.log(data); 
            return data; 
        });
    }
    return {
        get : get
    }
});

虽然这对于一个简单的案例来说是不必要的混淆(我只是将$http.get().then().catch()内容放在控制器中而不是工厂中。