【问题标题】:AngularJS Route breaks on manual refreshAngularJS路由在手动刷新时中断
【发布时间】:2013-08-11 11:02:27
【问题描述】:

在 config 方法中,我有一些路由定义如下:

$locationProvider.html5Mode(true);

$routeProvider.when('/', {
  ...
});

$routeProvider.when('/front', {
  ...
});

$routeProvider.when('/user/account', {
  ...
});

使用<a href=""> 标签浏览应用程序时一切正常。但是,当我转到/user/account 并手动刷新我的浏览器时,它会将/account 弹出路由并将我重定向到/user,由于没有为/user 定义路由,因此中断了渲染过程。

我注意到当我将路由配置为仅/account 时不会发生这种情况,但这并不能解决真正的问题。所以我设置了以下包罗万象(在上面的路线下方)来记录正在发生的事情:

$routeProvider.otherwise({
  redirectTo: function() {
    console.log('bumped', arguments);

    return '/';
  }
});

并看到它试图匹配 /account 而不是 /user/account。这是怎么回事?

我使用的是 Angular 1.1.5。服务器在所有请求(对于 HTML5 模式)上适当地返回 index.html,所以这似乎是一个客户端问题。

如何正确配置此路由?

编辑

原来这是 1.1.5 内核中的错误。

https://github.com/angular/angular.js/issues/2799

在这里打补丁

https://github.com/IgorMinar/angular.js/commit/2bc62ce98f893377bfd76ae211c8af027bb74c1d

【问题讨论】:

  • 我认为您需要ui-routerrepo here 这是一个关于此的article
  • @YahyaKACEM:我之前看过这个。您是说 Angular 不支持开箱即用的嵌套路由吗? (/user/account/:id vs /user/:somearea/:id)

标签: angularjs angularjs-routing


【解决方案1】:

最终使用ui-router 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 2016-07-17
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2016-02-07
    • 2013-05-24
    相关资源
    最近更新 更多