2017-01-05 44 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';導航 - 這會觸發整頁重新加載,因此所有服務也會重新初始化。

您可能想使用$ location服務。請參閱documentation和/或this answer以瞭解兩者之間的區別。

+1

哦!非常感謝!它現在有效! –