角度检测离开路线。
我正在使用Angular 1.5和ui-router。我想检测用户leaves
何时路由。我目前得到的东西,如:角度检测离开路线。
$scope.$on("$stateChangeSuccess", function() {
if (!$scope.flag) {
//...
$scope.do_work(reason);
}
});
这完全不是那么回事,因为当用户浏览到这条路线,$scope.flag
设置为false
而这个函数不正确地触发。当用户从特定路线导航离开时,是否有一种惯用的方式来启动某个功能?
我会说使用onExit
钩ui-router
你可以指定单状态。但是你不能在里面访问$scope
。
为了处理它,我会说保持服务,将有共享数据。从您想要的状态的onExit
挂钩更改可共享的数据。然后,您也可以访问控制器内的相同服务。
$stateProvider.state("contacts", {
template: '<h1>Dummy Template</h1>',
controller: 'myCotroller',
onExit: function(sharableService){
//... do something sharableService variable...
}
})
这听起来像是最好的解决方案,但我不确定我是否想创建一个仅具有一个变量状态的服务。我能够通过使用'rootScope'来取代范围,这不是一个好的解决方案。 –
不要去rootScope,创建服务only.rather说它像一些通用的名称,如'sharedDataService',并有你在那里变量,可能在未来你可以有更多的变量数据和方法.. –
我结束了使用' $范围。$ destroy'。我试图在angular的配置函数中使用$ stateProvider注入一个服务,但那不起作用。 –
当它导航到**它时,它来自另一条路线(导航)。所以它总是被解雇 –