如何使用 Angular.js 进行重定向?
Posted
技术标签:
【中文标题】如何使用 Angular.js 进行重定向?【英文标题】:how can I make a redirection with Angular.js? 【发布时间】:2013-04-18 16:32:58 【问题描述】:我想重定向到另一个路由,页面必须刷新并在服务器端处理,所以$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
,我会得到预期的结果(会话被破坏并重定向到'/')
【问题讨论】:
【参考方案1】:通过不工作代码的示例将很容易回答这个问题,但是有了这个 > 信息,我认为最好的信息是您在 > angularjs 摘要之外调用 $location.path。
尝试在指令
scope.$apply(function() $location.path("/route"););
"上执行此操作-Renan Tomal Fernandes
【讨论】:
它对我不起作用。我将把我的代码添加到我之前的帖子中:) 它的$scope.$apply
或scope.$apply
【参考方案2】:
随你去吧:
window.location.assign(url);
或者:
window.location.replace(url);
不会将当前页面保存在浏览器会话历史记录中。
【讨论】:
这个问题是在 AngularJS 的上下文中提出的。绝不建议在 Angular 中使用非 Angular 服务,例如$window 是 Angular 服务。有很多原因在这里可能无关紧要。 感谢您的讲座。用 $window 替换 window ,答案仍然有效。以上是关于如何使用 Angular.js 进行重定向?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止在Angular Js1.2中重定向<a href="#something">
使用 grunt 服务器,如何将所有请求重定向到根 url?