所以,这是一个有点愚蠢的问题,但如果我在登录页面上,并且点击了一个进入登录页面的链接,我不希望routeProvider做任何事情。有没有办法做到这一点,这样做是个好主意吗?
一些代码:
app.config(function($routeProvider,$locationProvider) {
//TODO: If already /login, do nothing
$routeProvider.when('/login', {
templateUrl: '../views/login.ejs',
controller: 'loginController',
});
$routeProvider.when('/register', {
templateUrl: '../views/register.ejs',
controller: 'registerController',
});
$locationProvider.html5Mode(true);
});
我看到的一个潜在问题是,如果用户真的想要手动刷新页面,他将无法做到。
答案 0 :(得分:0)
我相信你可以在你的主控制器中做这样的事情
angular.module(..).config(/* your routes */).run(function($rootScope) {
$rootScope.$on('$locationChangeStart', function (event, newUrl, current) {
// compare previous url to current one - if same, it is navigating to same page
if (newUrl === current)
event.preventDefault(); // This prevents the navigation from happening
});
});
请记住,这将适用于所有路线(我做了一些通用的),并且您正在比较完整的网址(我找不到只测试路线的方法)
如果您只希望/ login登录,那么只需将if子句修改为
即可if(current.endsWith('/login))
如果您需要IE suppport(因为IE中不支持endsWith()
),请使用
if (current.match("/login$"))
答案 1 :(得分:0)
执行以下操作:
Stopwatch