我想重定向到另一条路线,页面必须刷新并处理服务器端,因此$location.path(url)
无法帮助我。我尝试了window.location(url)
,但我有这个错误:window.location is not a function
我的app.js:
'use strict';
var app = angular.module('myApp', []).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.when('/', {
templateUrl: 'partials/index'});
$routeProvider.when('/logout', {
controller: 'logoutCtrl'});
$routeProvider.otherwise({
redirectTo: '/'});
$locationProvider.html5Mode(true);
}]);
我的logoutCtrl:
function logoutCtrl($scope, $location){
$apply(function() {
$location.path("/users/logout");
});
}
partials / index包含以下链接:
a(href='/logout') Logout
现在,我将展示如何使用Express.js管理我的路由服务器端:
app.get('/', ctrl.index);
app.get('/partials/:name', ctrl.partials);
app.get('/users/logout', ctrl.logout);
exports.logout = function(req, res)
{
console.log('logout');
req.session.destroy(function(err){ // I destroy my session
res.redirect('/'); // redirection to '/'
});
}
现在当我点击“注销”时没有发生任何事情,我只是在我的栏中看到这条路线localhost:3000/logout
,但是如果我输入localhost:3000/users/logout
我会得到预期的结果(会话被破坏并重定向到' /')
答案 0 :(得分:4)
使用不工作代码的示例将很容易回答这个问题,但是这个>我能想到的最好的信息就是你在>之外调用$ location.path。 angularjs digest。
尝试在指令
上执行此操作scope.$apply(function() {$location.path("/route");});
“
答案 1 :(得分:0)
请继续:
window.location.assign(url);
可替换地:
window.location.replace(url);
,不会将当前页面保存在浏览器会话历史记录中。