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

AngularJS: Set private service variable in callback

本文关键字:服务 变量 设置 回调 AngularJS      更新时间:2023-09-26

我正在尝试这样做:

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是一个未定义的变量。

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

您需要在 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;
            });
        }
}