2016-01-21 10 views
0

Я пытаюсь передать данные с одного контроллера на другой с помощью службы, однако независимо от того, что я пытаюсь, он всегда возвращает «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 

}]); 

То есть простой код, к сожалению, я боролся в течение нескольких часов в настоящее время , любое предложение ? Благодарю.

+0

Вы также используете 'Data used!' В консоли? –

+0

Единственное отличие, которое я вижу, это то, что в первом примере метод 'setData' вызывается внутри блока' then'. Можете ли вы попробовать это во втором контроллере? – frishi

+0

Да, я использую данные! в консоли при использовании его с контроллера1, но не с контроллера2. И я попытался также получить данные в блоке, как результат того же запроса, что и в контроллере1, который все еще не работает. – elyanno

ответ

0

Создано скрипку здесь: http://jsfiddle.net/frishi/8yn3nhfw/16

Чтобы изолировать проблему, вы можете удалить зависимости от определения для MYSERVICE и посмотреть, если это делает его работу? Посмотрите на консоль после загрузки скрипки.

var app = angular.module('app', []) 
.service('myService', function(){ 
    this.getData = function(){ 
    return "got Data"; 
    } 
}) 
0

Я предполагаю, что проблема заключается в том, что вы возвращаете this.savedData в службу. Попытайтесь вернуть savedData.

this ведет себя по-разному в Javascript, чем на других языках.

+0

Даже без этого. он не работает, я действительно добавил его после прочтения других сообщений по этому вопросу, но он не изменил результат. – elyanno

Смежные вопросы