2

別のルートにリダイレクトしたいのですが、ページを更新してサーバー側で処理する必要があるため、$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すると結果が期待されます(セッションが破棄され、「/」にリダイレクトされます)

4

2 に答える 2