Ui 路由器浏览器刷新

Ui router browser refresh

我有一个 Angular 1.x 项目,配置如下:

Html 根:

<base href="/admin/" />
<div ui-view="mainView">

状态提供商配置:

config(['$stateProvider', function ($stateProvider) {
   $stateProvider
        .state('cats_state', {
            url: 'cats',
            views: {
                'mainView': {
                    templateUrl: '/app/components/cats/cats.html'
                }
            }
        })
        .state('dogs_state', {
            url: 'dogs',
            views: {
                'mainView': {
                    templateUrl: '/app/components/dogs/dogs.html'
                }
            }
        })

}])

cats_statedogs_state 状态与相对于 /admin/ 路径的 url 相关联,它们加载特定的 html 模板同一地区。当我点击其中任何一个时,浏览器 url 变为 /admin/cats and/or /admin/dogs。唯一的问题是:如何在我手动重新加载 /admin/cats url 时重新加载相同的 state/template?如果可能的话,我只想使用 angular ui-router 来实现。

当人们正在查看这个问题(但没有回答)时,我找到了解决方案:那就是定义

<base href="/" />

以及各种状态的 urls:

config(['$stateProvider', function ($stateProvider) {
   $stateProvider
        .state('cats_state', {
            url: '/admin/cats',
            views: {
                'mainView': {
                    templateUrl: '/app/components/cats/cats.html'
                }
            }
        })
        .state('dogs_state', {
            url: '/admin/dogs',
            views: {
                'mainView': {
                    templateUrl: '/app/components/dogs/dogs.html'
                }
            }
        })

}])

我不明白ui为什么会这样,但它是这样工作的。此外,我注意到 / 路径首先被重新加载(因此所有依赖项),在此之后,ui-路由器以某种方式解析当前 url,可能基于状态配置一个来自浏览器的地址。