我有两个控制器。第一个将变量设置到我的服务中,而我的第二个变量应该得到这个变量,但它是未定义的。 角度服务不应该是单身人士吗?因为我的服务似乎是为每个控制器实例化的。
这是我的代码:
第一个控制器
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;
}
};
});
你有什么想法吗?
答案 0 :(得分:2)
您正在使用$window.location.href = '/talk';
进行导航 - 这会触发整页重新加载,因此所有服务也会重新初始化。
您可能想要使用$ location服务。请参阅documentation和/或this answer,了解两者之间差异的摘要。