角度检测离开路线。

问题描述:

我正在使用Angular 1.5和ui-router。我想检测用户leaves何时路由。我目前得到的东西,如:角度检测离开路线。

$scope.$on("$stateChangeSuccess", function() { 
     if (!$scope.flag) { 
     //... 
     $scope.do_work(reason); 
     } 
    }); 

这完全不是那么回事,因为当用户浏览到这条路线,$scope.flag设置为false而这个函数不正确地触发。当用户从特定路线导航离开时,是否有一种惯用的方式来启动某个功能?

+0

当它导航到**它时,它来自另一条路线(导航)。所以它总是被解雇 –

我会说使用onExitui-router你可以指定单状态。但是你不能在里面访问$scope

为了处理它,我会说保持服务,将有共享数据。从您想要的状态的onExit挂钩更改可共享的数据。然后,您也可以访问控制器内的相同服务。

$stateProvider.state("contacts", { 
    template: '<h1>Dummy Template</h1>', 
    controller: 'myCotroller', 
    onExit: function(sharableService){ 
    //... do something sharableService variable... 
    } 
}) 
+0

这听起来像是最好的解决方案,但我不确定我是否想创建一个仅具有一个变量状态的服务。我能够通过使用'rootScope'来取代范围,这不是一个好的解决方案。 –

+1

不要去rootScope,创建服务only.rather说它像一些通用的名称,如'sharedDataService',并有你在那里变量,可能在未来你可以有更多的变量数据和方法.. –

+0

我结束了使用' $范围。$ destroy'。我试图在angular的配置函数中使用$ stateProvider注入一个服务,但那不起作用。 –