【问题标题】:Telling Angular Js to ignore a specific route告诉 Angular Js 忽略特定路由
【发布时间】:2013-06-28 17:23:50
【问题描述】:

我已经在 Angular 中设置了路由并且一切正常:

$locationProvider.html5Mode(true);
$routeProvider.
      when('/', { templateUrl: '/Home/Index' }).
      when('/User', { templateUrl: '/User/Index' });

但是,我现在有一个锚标记用作注销按钮,它只会将用户重定向到 /User/Logout,然后注销会将用户注销并将他们重定向到登录页面。所以我想要的是 Angular js 忽略这个特定的路由并允许它做一个正常的 http 重定向。这似乎应该很容易,但我一直无法找到问题的解决方案。

我知道我可以做一个点击事件并在点击事件中做一个 window.location 更改,但这似乎是一种非常老套的方法。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    在你的锚点中指定 target="_self",这样 angularjs 就不会重写 URL。请参阅此处的讨论:http://docs.angularjs.org/guide/$location

    【讨论】:

    • 这对我来说在 Bootstrap 的下拉菜单中是必需的!
    • 这帮助我获得了在 MVC 6 模板中工作的注册和登录链接,我的应用程序的其余部分是 Angular。
    • 在使用快速路由和角度路由混合处理登录/注销序列时非常有用。
    • 这么简单!从来不知道这是可能的!可以确认这是使用 Python Flask Web 应用程序工作的,其中“应用程序”页面包含所有 Angular 代码,其路由接管了 Python 应用程序。很有用
    【解决方案2】:

    您也可以使用带有 redirectTo 的函数:

     .when('/User/Logout', {
                redirectTo: function(obj,path,search) {
                    window.location.href=path;
                }
            })
    

    【讨论】:

    • 你确定这是那个问题的答案吗!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2015-10-25
    • 2016-08-22
    • 1970-01-01
    相关资源
    最近更新 更多