0
Я хочу использовать данные, хранящиеся в одной службе, в другой службе.Угловой ввод в эксплуатацию (асинхронный) не работает
Проблема: Функция обратного вызова для извлечения данных кажется асинхронной, и я не могу применить свои методы для извлеченных данных.
Что извлечения данных выглядит
app.factory('userService', ['$http', 'rootUserService', function ($http, rootUserService) {
var user = null;
var rootUser;
return {
getUser : function(userId) {
var that = this;
rootUserService.getUser().then(function(data) {
that.rootUser = data;
console.log(data) // working
});
console.log(that.rootUser) // undefined
console.log(rootUser) // undefined
// Do some stuff with rootuser (another async call & compare users)
}
}
}]);
Где данные извлекаются из:
app.factory('rootUserService', ['$http', '$rootScope', function($http, $rootScope) {
var user = null;
return {
makeRequest: function(url) {
var that = this;
return $http.get(url).then(function (res) {
return res.data;
});
},
// This is what is used for retrieval
getUser: function() {
if(!this.user) { this.user = this.makeRequest('/api/user/get'); };
return this.user;
}
}
}]);
Используйте это в заводе '' UserService: rootUserService.getUser(), а затем (функция (данные) { console.log ('это работает?'); // Безразлично 't отображается в консоли. that.rootUser = data; }, function (err) {console.log (err);}); Укажите, как выглядит ошибка. –
'' этот бег? '' А еще звонил ajax? – PSL
@Stefan, никаких ошибок, он работает сейчас. @PSL, ajax действительно сделал это. Контекст вопроса немного изменился. См. 'GetUser' – dmr07