在angularjs中设置cookie然后路由到新页面

时间:2015-03-25 02:17:05

标签: angularjs angular-cookies

Angularjs版本1.3.15

我已经在我的页面“A”上使用$ cookieStore.put设置了一个cookie,现在希望将用户重定向到新页面“B”以利用该cookie。我的问题是

如何将用户重定向到以角度定义的已知路由,导致整页加载,这将读取Cookie标头并允许我访问我的Cookie?

这是我发现有效的唯一方法:

testControllers.controller('aController', ['$window', '$routeParams', '$cookieStore',
    function($window, $routeParams, $cookieStore) {
        $cookieStore.put('test', 1);

        if ($routeParams.bounce && $routeParams.bounce != '') {
            $window.location.href = '/#/' + $routeParams.bounce;
            $window.location.reload(true);
        } else {
            $window.location.href = '/#/';
            $window.location.reload(true);
        }
    }
]);

然而,它导致双页加载并且非常糟糕。必须有更好的方法。

提前致谢

编辑:

页面“B”正在使用一个使用指令的不同控制器,但我正在查看Chrome中的“资源”选项卡 - 这就是我看到浏览器还没有看到cookie的方式。我正在寻找查看cookie的指令:

testControllers
    .controller('menuDirective', ['$scope', '$cookieStore',
        function($scope, $cookieStore) {
            $scope.loggedin = false;

            if ($cookieStore.get('loggedin')) {
                $scope.loggedin = true;
            }
        }
    ])
    .directive('mymenu', function() {
        return {
            templateUrl: 'app/shared/menu/menuView.html'
        }
    });

1 个答案:

答案 0 :(得分:1)

我通过在登录控制器顶部放置一个if语句来检查是否存在cookie,以及是否在那里进行location.path更改。然后在我登录的POST响应中设置登录cookie,只需执行window.location.reload(true);这将触发页面刷新,在浏览器中填充cookie,并允许命中if语句。