我的服务中的数据在我的角度控制器中不是持久的

时间:2017-01-05 15:55:45

标签: angularjs service controller singleton persistent

我有两个控制器。第一个将变量设置到我的服务中,而我的第二个变量应该得到这个变量,但它是未定义的。 角度服务不应该是单身人士吗?因为我的服务似乎是为每个控制器实例化的。

这是我的代码:

第一个控制器

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 个答案:

答案 0 :(得分:2)

您正在使用$window.location.href = '/talk';进行导航 - 这会触发整页重新加载,因此所有服务也会重新初始化。

您可能想要使用$ location服务。请参阅documentation和/或this answer,了解两者之间差异的摘要。