$ location.path(...)为url添加了一个ID

时间:2014-03-05 12:43:26

标签: angularjs

如果用户已注销,我想将用户发送到登录页面,但它失败了。我有这个配置:

webShopApp.config(function($routeProvider) {
    $routeProvider.when('/login', { 
        templateUrl: 'partials/login.html', 
        controller: 'LoginController' 
    });
    $routeProvider.when('/:id?/?products', {
        templateUrl: 'partials/products.html', 
        controller: 'MenuController' 
    });
});

请注意“/:id?/?”整合产品代码。假设网址是'index.html#/ 45 / products'。如果控制器发现用户已注销,则调用

$location.path('/login');

如果我在console.log中指定$ location.path(),它会按预期显示'/ login',但浏览器中的url是'index.html#/ 45 / login'。为什么'45'(id)仍然存在,我如何摆脱它,即重定向到'index.html#/ login'而没有上一个路径的id?

2 个答案:

答案 0 :(得分:1)

我猜您应该使用window.location = 'yourUrl';代替$location.path('/login');在这种情况下。但在这种情况下,页面会重新加载。

答案 1 :(得分:0)

看看你是否需要在纯粹的角度训练,所以请避免使用javascript术语和jquery术语,即windows.location和$ location.path;每当用户从应用程序注销时,更好的选择始终是将用户路由到登录页面。 为此,您可以在路由级别指定它,即

$routeProvider.otherwise({redirectTo: "/login"});

或者您可以说点击哪个用户将被重定向到登录页面的注销链接

$routeProvider.when('/logout', { 
        templateUrl: 'partials/login.html', 
        controller: 'LoginController' 
    });

我希望这可能有所帮助。