我有一个希望很简单的问题。我用Ionic和AngularJS构建了一个小应用程序。有两个状态,其中一个是包含表单的选项卡。提交时,表单选项卡不再可访问。我试图在本地存储中编写一个布尔变量,它对我来说很好。不幸的是,当我提交表单时,我仍然可以按下离子或android硬件按钮的后退按钮返回到表单并再次提交。我通过ng-init调用了一个函数,它在加载之前切换状态,但这只适用于刷新页面而不是状态更改。
我怎样才能听取状态变化?你有更好的解决方案吗?
答案 0 :(得分:11)
实际上很简单,UI路由器可以让你访问3个不同的状态监听器:
$rootScope.$on('$stateChangeStart',myFunc)
- >国家正在改变时开火
$rootScope.$on('$stateChangeSuccess', myFunc)
- >国家成功改变后开火
$rootScope.$on('$stateChangeError', myFunc)
- >状态变化失败时触发
然后,您可以通过将状态的resolve属性与promise相关联来禁止访问一个页面。 see doc
如果承诺得到解决,则授予访问权限,否则拒绝访问。