別のルートにリダイレクトしたいのですが、ページを更新してサーバー側で処理する必要があるため、$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);
}]);
私のログアウトCtrl:
function logoutCtrl($scope, $location){
$apply(function() {
$location.path("/users/logout");
});
}
パーシャル/インデックスには、次のリンクが含まれています。
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
すると結果が期待されます(セッションが破棄され、「/」にリダイレクトされます)