AngularJS监听状态改变事件

AngularJS listen to state change event

本文关键字:事件 改变 状态 监听 AngularJS      更新时间:2023-09-26

我有一个很简单的问题。我用Ionic和AngularJS构建了一个小应用程序。有两个状态,其中一个是包含表单的选项卡。提交后,表单选项卡应该不再是可访问的。我试过在本地存储中写一个布尔变量,它对我来说很好。不幸的是,当我提交表单时,我仍然可以按ionic或android硬件按钮的返回按钮回到表单并再次提交。我通过ng-init调用了一个函数,在加载之前切换状态,但这只适用于刷新页面,而不是在状态改变时。

如何收听状态变化?你有更好的解决办法吗?

这其实很简单,UI-router允许你访问3种不同的状态监听器:

$rootScope.$on('$stateChangeStart',myFunc) ->在状态改变时触发

$rootScope.$on('$stateChangeSuccess', myFunc) ->当状态成功改变时触发

$rootScope.$on('$stateChangeError', myFunc) ->状态改变失败触发

然后你可以通过将你的状态的resolve属性关联到一个承诺来禁止访问一个页面。见doc

如果承诺被解析,则授予访问权限,否则拒绝访问