Estoy usando el siguiente código. Estoy leyendo un nombre de archivo json es "users.json". Si leo este archivo en el controlador a través de $ http, todo funciona bien. pero quiero usar los datos que leo del archivo, una y otra vez en un controlador diferente, así que hice una fábrica para esto. pero en fábrica cuando leo datos de ese archivo json a través de $http.get() y a cambio cuando llamo a ese método de servicio en mi controlador y devuelve Object { $$state: Object }

app.factory('AboutFactory',['$http',function ($http) {
    return {
        getter: function () {
            return $http({
                method : 'GET',
                url : '/home/penguin/Modeles/users.json',
                cache : true
            })
            .then(function (response) {
                return response.data
            })
        }         
    }
}])
0
user7736786 20 mar. 2017 a las 01:20

2 respuestas

La mejor respuesta

El resultado de la función getter es una promesa. así que deberías usarlo así:

AboutFactory.getter().then(function(res)
{
   console.log(res);
});
2
thadam 19 mar. 2017 a las 22:27

Prueba este enfoque. Funcionará según sus expectativas.

  • Lea el archivo JSON en el controlador a través del servicio $http, ya que funciona bien.
  • Para compartir los datos de respuesta de un controlador a otro, puede crear un servicio y almacenar los datos en ese servicio.

Servicio:

app.service('setGetData', function() {
  var data = '';
    getData: function() { return data; },
    setData: function(requestData) { data = requestData; }
});

Controladores:

app.controller('myCtrl1', ['setGetData',function(setGetData) {

  // To set the data from the one controller
  var data = 'Hello World !!';  
  setGetData.setData(data);

}]);

app.controller('myCtrl2', ['setGetData',function(setGetData) {

  // To get the data from the another controller  
  var res = setGetData.getData();
  console.log(res); // Hello World !!

}]);

Aquí, podemos ver que myCtrl1 se usa para configurar los datos y myCtrl2 se usa para obtener los datos. Entonces, podemos compartir los datos de un controlador a otro controlador como este.

0
Rohit Jindal 20 mar. 2017 a las 07:54