Mav*_*arn 8 angularjs angular-ui-router
我希望当前的状态更改不会保存在导航历史记录中.然后,当用户单击"返回"时,将跳过视图并返回上一页.
我可以暂时禁用状态更改以保存在导航历史记录中吗?
我相信这是ui-router的值为{location:'replace'}的选项参数.
文档说明:
location布尔或"替换"(默认为true),如果为true将更新位置栏中的URL,如果为false则不会.如果字符串"replace",将更新url并替换上一个历史记录.
似乎有一个问题(在GitHub上看到它)要修复.
本着 stackoverflow 的精神,我将尝试回答这个问题,并且不会提及您所要求的是一个真正可怕的黑客;-)
我想你可能需要这样的东西。(代码是coffeescript)
angular
.module 'app', ['ui.router']
.run ($rootScope, $state) ->
$rootScope.$on '$locationChangeStart', (event) =>
if $state.is 'bad-state'
event.preventDefault()
$state.go 'good-state'
Run Code Online (Sandbox Code Playgroud)
当位置更改时(您也可以使用$stateChangeStart
),您检查当前状态,如果它是您不想要的状态,则转到您想要的状态。这event.preventDefault()
实际上停止了最初请求状态的处理。
如果您需要更脏的版本,那么您可以检查位置 url 而不是状态并用于$location.url
执行传输,如下所示:
angular
.module 'app', ['ui.router']
.run ($rootScope, $location) ->
$rootScope.$on '$locationChangeStart', (event, nextLocation) =>
if nextLocation is '/bad/location'
event.preventDefault()
$location.path '/good/location'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8313 次 |
最近记录: |