2016-08-18 118 views
0

我正在使用Angular 1.5和ui-router。我想檢測用戶leaves何時路由。我目前得到的東西,如:角度檢測離開路線。

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

這完全不是那麼回事,因爲當用戶瀏覽到這條路線,$scope.flag設置爲false而這個函數不正確地觸發。當用戶從特定路線導航離開時,是否有一種慣用的方式來啓動某個功能?

+0

當它導航到**它時,它來自另一條路線(導航)。所以它總是被解僱 –

回答

2

我會說使用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注入一個服務,但那不起作用。 –