我在rails应用程序中使用angular,并将ui-router设置为几个状态。
name: 'item'
url: '/items'
子状态
name: detail
url: "/{item_id:[0-9]{1,4}}/detail"
parent: item
使用
切换状态$state.go('detail', item_id: id)
一切似乎都很好,除了当我点击浏览器上的后退按钮。
当后退按钮被点击时,浏览器地址栏中的位置正确地改变为显示前一个状态的唯一url,然而ui-router似乎没有改变状态,我没有得到$stateChangeStart事件。
这是ui-router的正常行为还是我设置不正确?
如果这是正常的行为是否有任何方法我可以强制状态改变时,后退按钮被点击?
ui-router
的正常行为是,浏览器返回按钮是开箱工作(正如我们所期望的)。
试着玩这个例子,还有一个监听器'$stateChangeStart'
写入控制台
.run(function($rootScope, $location){
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams){
console.log(toParams)
});
})
(点击右上角的蓝色图标,在分隔窗口中打开预览)…你可以在几个细节之间导航,然后使用退格键来模仿后退键…一切都被正确地重新触发了…点击这里查看