如何在 AngularJS 刷新时重定向到不同的视图?
How to redirect on different view on refresh in AngularJS?
我正在 AngularJS 中开发应用程序。基本上,我有一个 "home" 页面和一个 "new project"。在主页上我有一个菜单 link 到 "new project"。
我按如下方式配置了 $stateProvider :
$stateProvider.state('home', {
url: '/',
templateUrl: 'partials/home.jsp'
}).state('newproject', {
url: '/newproject',
templateUrl: 'partials/new-project.html'
})
所以,当我进入应用程序时,我在主页中。然后我点击 "new project" link 并进入 "new project" 页面。现在 url 是 http://myapp/newproject
我的问题是,当我刷新页面时,我想在主页上被重定向,即使我的浏览器栏中的 url 仍然是 http://myapp/newproject
我怎样才能做到这一点?
更新:
非常感谢 squiroid 的回答。我使用了第二种解决方案,效果非常好。稍微澄清一下,以防万一有人遇到同样的问题,在重定向到主页之前,您必须防止默认操作。所以正确的工作代码是:
$rootScope.$on("$locationChangeStart", function(event, next, current) {
if(next==current && next=='/newproject')
event.preventDefault();
$state.go('home');
});
在 'newproject' 的控制器中使用它,它正在监听您的刷新:
$rootScope.$on('$locationChangeStart', function(event) {
$state.go('home');
});
或将其放入 app.run();
$rootScope.$on("$locationChangeStart", function(event, next, current) {
if(next==current && next=='/newproject')
$state.go('home');
});
我正在 AngularJS 中开发应用程序。基本上,我有一个 "home" 页面和一个 "new project"。在主页上我有一个菜单 link 到 "new project"。
我按如下方式配置了 $stateProvider :
$stateProvider.state('home', {
url: '/',
templateUrl: 'partials/home.jsp'
}).state('newproject', {
url: '/newproject',
templateUrl: 'partials/new-project.html'
})
所以,当我进入应用程序时,我在主页中。然后我点击 "new project" link 并进入 "new project" 页面。现在 url 是 http://myapp/newproject
我的问题是,当我刷新页面时,我想在主页上被重定向,即使我的浏览器栏中的 url 仍然是 http://myapp/newproject
我怎样才能做到这一点?
更新:
非常感谢 squiroid 的回答。我使用了第二种解决方案,效果非常好。稍微澄清一下,以防万一有人遇到同样的问题,在重定向到主页之前,您必须防止默认操作。所以正确的工作代码是:
$rootScope.$on("$locationChangeStart", function(event, next, current) {
if(next==current && next=='/newproject')
event.preventDefault();
$state.go('home');
});
在 'newproject' 的控制器中使用它,它正在监听您的刷新:
$rootScope.$on('$locationChangeStart', function(event) {
$state.go('home');
});
或将其放入 app.run();
$rootScope.$on("$locationChangeStart", function(event, next, current) {
if(next==current && next=='/newproject')
$state.go('home');
});