AngularJS:在回调中设置私有服务变量

时间:2014-11-27 06:04:32

标签: javascript angularjs

我试图这样做:

app.service('productsService', ['$http', productsService]);

function productsService($http){

    return {
        getProducts: getProducts
    }

    var _products = [];

    function getProducts(){

        $http.get('http://localhost:4000')
            .then(function(data){
                _products = data;
            });
        }
}

但是那么回调 _products 是一个未定义的变量。

从当时的回调中设置_products值的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要在return语句之前设置变量。

app.service('productsService', ['$http', productsService]);

function productsService($http){
    var _products = [];

    return {
        getProducts: getProducts
    }

    //var _products = []; this will never run

    function getProducts(){

        $http.get('http://localhost:4000')
            .then(function(data){
                _products = data;
            });
        }
}