2017-01-05 9 views
2

У меня есть два контроллера. Первый устанавливает переменную в мою службу, и мой второй должен получить эту переменную, но она не определена. Не являются ли угловые службы единственными? Потому что моя служба создается для каждого контроллера.Данные в моем сервисе не постоянны по моим угловым контроллерам

Вот мой код:

Первый контроллер

angular.module('myApp').controller('HomeCtrl', ['$scope', 'User', function ($scope, User) { 
    $scope.join = function() { 
     User.setRoom("test"); 
     console.log(User.getRoom()); // displays 'test' 
     $window.location.href = '/talk'; 
    } 
}]); 

На втором контроллере, у меня просто

console.log(User.getRoom()); // displays '' 

А вот мой служба

angular.module('myApp').factory('User', function() { 
    var data = { 
     room: '' 
    }; 
    return { 
     getRoom: function() { 
      return data.room; 
     }, 
     setRoom: function (room) { 
      data.room = room; 
     } 
    }; 
}); 

У вас есть идея?

ответ

1

Вы используете $window.location.href = '/talk'; для навигации - это запускает полную перезагрузку страницы, поэтому все службы также повторно инициализируются.

Возможно, вы захотите использовать службу определения местоположения $. См. documentation и/или this answer для краткого изложения разницы между ними.

+1

Oh! Большое спасибо! Он работает сейчас! –