【问题标题】:Setting a cookie in angularjs then routing to a new page在angularjs中设置一个cookie然后路由到一个新页面
【发布时间】:2015-05-28 13:46:23
【问题描述】:

Angularjs 版本 1.3.15

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

如何将用户重定向到以 Angular 定义的已知路由,从而导致整个页面加载,从而读取 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'
        }
    });

【问题讨论】:

  • 您如何访问页面 B 上的 cookie?是否使用不同的控制器?
  • 已编辑问题以表示包含指令的页面“B”
  • 您是否在aController 运行后立即设置cookie?然后menuDirective 控制器肯定在那之后运行吗?如果您可以将其复制为 Plunkr 会有所帮助,我无法想象为什么会发生这种情况。
  • 似乎需要做很多工作。我通过在我的登录控制器顶部有一个 if 语句来检查 cookie 的存在,以及它是否在那里进行 location.path 更改来解决这个问题。然后在我对登录的 POST 响应中设置登录 cookie 只需执行 window.location.reload(true);这将触发页面刷新,在浏览器中填充 cookie,并允许点击 if 语句。
  • 似乎我还不能结束这个问题。

标签: angularjs angular-cookies


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2014-01-21
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多