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

4

使用无效代码的示例将很容易回答这个问题,但是有了这个 > 信息,我认为最好的方法是您在 > angularjs 摘要之外调用 $location.path。

尝试对指令执行此操作scope.$apply(function() {$location.path("/route");});

-雷南·托马尔·费尔南德斯

于 2013-04-24T23:01:08.460 回答
0

只需:

window.location.assign(url);

或者:

window.location.replace(url);

它不会将当前页面保存在浏览器会话历史记录中。

于 2013-07-29T04:39:03.567 回答