2014-11-27 3 views
0

Я пытаюсь сделать это: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

Вам нужно установить переменную перед оператором 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; 
      }); 
     } 
}