Angularjs 角度UI路由,刷新时页面自动重定向到父状态
我在一个项目中使用了AngularUI路由。当我尝试刷新网页或直接输入URL时,它被重定向到父状态。它确实加载了我重新加载的URL的状态,但随后会快速重定向到父状态。这是我的州路线Angularjs 角度UI路由,刷新时页面自动重定向到父状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我在一个项目中使用了AngularUI路由。当我尝试刷新网页或直接输入URL时,它被重定向到父状态。它确实加载了我重新加载的URL的状态,但随后会快速重定向到父状态。这是我的州路线 $stateProvider .state('home', { url: "", views: { "home": { templateUrl: root_url + "home" },
$stateProvider
.state('home', {
url: "",
views: {
"home": {
templateUrl: root_url + "home"
},
},
})
.state('home.store', {
url: "/store",
views: {
"store": {
templateUrl: root_url + "store"
},
},
})
.state('home.store.storecontent', {
views: {
"storecontent": {
templateUrl: root_url + "storecontent"
}
}
})
假设当前我处于home.store.storecontent状态。如果我在这里刷新页面,在重新加载当前状态后,它会将我重定向到主状态的父状态。我想避免这种情况 我们通常有两种选择。第一个是为child定义url,第二个是-make parent abstract,这意味着它是默认的child 第一种方法有两种 如果我们希望保持父项“home.store”和子项“home.store.storecontent”非抽象,我们必须为它们定义唯一的url,例如:
.state('home.store', {
url: "/store",
...
})
.state('home.store.storecontent', {
url: "/content",
...
})
现在我们有两个链接:
<a href="#/store">
<a href="#/store/content">
检查一下
如果'home.store'不应该是抽象的,我们应该给它的子项提供一些非空的url-为了区分这两个…您使用的是ui sref和md活动的md选项卡吗 如果是,问题是md active fire单击选项卡,则会重定向到父状态
我曾经遇到过这个问题,现在通过在每个状态更改成功事件上缓存或存储当前状态名,并且在刷新时,如果登录有效,可以从中加载,就可以解决这个问题
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {//You can save your storing state name function here}
也许可以在home.store.storecontent中添加一个URL?我在发布问题之前也尝试了同样的方法。不幸的是,它无法工作。如果没有URL,则无法刷新状态。我还会将您的“home”URL更改为“/”我不想将home.store抽象化。我希望在刷新包含子状态的某些页面时避免重定向到父状态。问题是,该子状态没有定义URL。这意味着,如果刷新,浏览器将从头开始。它必须初始化UI路由器,传递URL。UI路由器将发现。。啊哈。。。它是#/商店。。。它的意思是“家。商店”-并将初始化它。所以正如我指出的,你们有两个选择1)使父对象抽象化-将直接选择子对象2)为子对象定义唯一的url…我扩展了我的答案,并展示了这两种方法。希望它能帮助你;)享受UI RouterI为每个州定义了唯一的URL。但它仍然不起作用。当我将根状态(home)定义为抽象时,主页本身不会被加载。当我查看网络调用时,所有AJAX调用和当前状态的HTML模板都已加载。在这之后,页面被重定向到父状态。看,我尽了最大努力,为你们创建了几个可用的掠夺物。他们确实遵循您的解决方案,并开展工作。我建议。。比较一下。试着把它们变成你的。。它将揭示出什么是错误的。。。希望这会有所帮助
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {//You can save your storing state name function here}