如何使用Angular.js进行重定向?

时间:2013-04-24 22:54:47

标签: javascript angularjs

我想重定向到另一条路线,页面必须刷新并处理服务器端,因此$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我会得到预期的结果(会话被破坏并重定向到' /')

2 个答案:

答案 0 :(得分:4)

  

使用不工作代码的示例将很容易回答这个问题,但是这个>我能想到的最好的信息就是你在>之外调用$ location.path。 angularjs digest。

     

尝试在指令scope.$apply(function() {$location.path("/route");});

上执行此操作      

- Renan Tomal Fernandes

答案 1 :(得分:0)

请继续:

window.location.assign(url);

可替换地:

window.location.replace(url);

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