在我的角度应用中,我需要在离开 特定页面之前警告用户,而不是每个页面。
如果我在页面的控制器中使用$locationChangeStart
我要警告用户,即使进入页面也会触发,这是不可取的。
如果我在父控制器上使用它,它将在任何地方触发,我必须添加复杂的if / else或switch结构,基本上告诉它永远不会触发,除非用户放弃该特定状态。
如何使用UI路由器检测用户实际离开(并且仅离开)特定state
?
答案 0 :(得分:4)
你应该使用一个事件(并在你自己的监听器上挂钩)
状态转换开始时触发。您可以使用
event.preventDefault()
来防止转换发生,然后转移承诺将被拒绝,并且会阻止“转换”。值。...
示例:强>
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
event.preventDefault();
// transitionTo() promise will be rejected with
// a 'transition prevented' error
})
这个Q& S中有一个详细的解释和工作的插件。答: