Compartir datos entre los controladores AngularJS pero los datos compartidos provienen de una llamada Ajax
Descubrí cómo compartir datos entre dos controladores AngularJS usando un servicio compartido en el siguiente ejemplo:
(Marchaviolín)
var app = angular.module('myApp', []);
app.factory('UserData', function() {
var data = {foo: 'bar'};
return {
getData: function() {
console.log('getData');
return data;
},
setData: function(newData) {
data = newData;
}
};
});
function MainCtrl($scope, UserData) {
console.log('MainCtrl');
console.log(UserData.getData());
}
MainCtrl.$inject = ['$scope', 'UserData'];
function JobListCtrl($scope, UserData) {
console.log('JobListCtrl');
console.log(UserData.getData());
}
JobListCtrl.$inject = ['$scope', 'UserData'];
Mi problema es que me gustaría que los datos mantenidos enUserData
para venir de una llamada Ajax (probablemente usando$http
).
Intenté hacer la llamada Ajax en elUserData
función de fábrica pero, ya que se ejecuta de forma asíncrona,MainCtrl
yJobListCtrl
son ejecutados antes de laUserData
El servicio realmente tiene datos en él.
¿Alguien puede darme alguna dirección sobre cómo configurar eso?