Я пытаюсь передать данные с одного контроллера на другой с помощью службы, однако независимо от того, что я пытаюсь, он всегда возвращает «undefined» на втором контроллере. Вот моя служба:Angularjs не может получить данные из службы
app.service('myService', ['$rootScope', '$http', function ($rootScope, $http) {
var savedData = {}
this.setData = function (data) {
savedData = data;
console.log('Data saved !', savedData);
}
this.getData = function get() {
console.log('Data used !', savedData);
return this.savedData;
}
}]);
Вот controller1:
.controller('HomeCtrl', ['$scope','$location','$firebaseSimpleLogin','myService','$cookies','$window', function($scope,$location, $firebaseSimpleLogin, myService, $cookies, $window) {
loginObj.$login('password', {
email: username,
password: password
})
.then(function(user) {
// Success callback
console.log('Authentication successful');
myService.setData(user);
console.log('myservice:', myService.getData()); // works fine
}]);
А потом controller2:
// Dashboard controller
.controller('DashboardCtrl', ['$scope','$firebaseSimpleLogin','myService',function($scope,$firebaseSimpleLogin, $location, myService) {
console.log('myservice:', myService.getData()); //returns undefined
}]);
То есть простой код, к сожалению, я боролся в течение нескольких часов в настоящее время , любое предложение ? Благодарю.
Вы также используете 'Data used!' В консоли? –
Единственное отличие, которое я вижу, это то, что в первом примере метод 'setData' вызывается внутри блока' then'. Можете ли вы попробовать это во втором контроллере? – frishi
Да, я использую данные! в консоли при использовании его с контроллера1, но не с контроллера2. И я попытался также получить данные в блоке, как результат того же запроса, что и в контроллере1, который все еще не работает. – elyanno