在 angularjs 中设置 cookie,然后路由到新页面
Setting a cookie in angularjs then routing to a new page
Angularjs 版本 1.3.15
我已经在我的页面 "A" 上使用 $cookieStore.put 设置了一个 cookie,现在希望将用户重定向到一个新页面 "B" 以使用该 cookie。我的问题是
如何将用户重定向到 angular 中定义的已知路由,从而导致整个页面加载,该页面将读取 cookie header 并允许我访问我的 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'
}
});
我通过在我的登录控制器顶部添加一个 if 语句来解决这个问题,该语句检查 cookie 是否存在,以及它是否存在以进行 location.path 更改。然后在我的 POST 登录响应中设置登录 cookie 只需执行 window.location.reload(true);这将触发页面刷新,在浏览器中填充 cookie,并允许命中 if 语句。
Angularjs 版本 1.3.15
我已经在我的页面 "A" 上使用 $cookieStore.put 设置了一个 cookie,现在希望将用户重定向到一个新页面 "B" 以使用该 cookie。我的问题是
如何将用户重定向到 angular 中定义的已知路由,从而导致整个页面加载,该页面将读取 cookie header 并允许我访问我的 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'
}
});
我通过在我的登录控制器顶部添加一个 if 语句来解决这个问题,该语句检查 cookie 是否存在,以及它是否存在以进行 location.path 更改。然后在我的 POST 登录响应中设置登录 cookie 只需执行 window.location.reload(true);这将触发页面刷新,在浏览器中填充 cookie,并允许命中 if 语句。