Compartilhamento de dados entre os controladores AngularJS, mas os dados compartilhados são provenientes de uma chamada Ajax
Eu descobri como compartilhar dados entre dois controladores AngularJS usando um serviço compartilhado no exemplo inventado abaixo:
(Funcionamentoviolino)
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'];
Meu problema é que eu gostaria que os dados contidosUserData
vir de uma chamada Ajax (presumivelmente usando$http
).
Eu tentei fazer a chamada Ajax noUserData
função de fábrica, mas, como ele está sendo executado de forma assíncrona,MainCtrl
eJobListCtrl
são executados antes doUserData
serviço realmente tem quaisquer dados nele.
Alguém pode me dar alguma orientação sobre como configurar isso?