2016-08-18 3 views
0

저는 Angular 1.5와 ui-router를 사용하고 있습니다. 나는 사용자 leaves 경로를 발견하고 싶다. 나는 현재 같은있어 :경로를 벗어나는 각도 탐지.

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

이 사용자가이 경로로 이동할 때, $scope.flagfalse로 설정되고이 기능을 잘못 발사하기 때문에 꽤 작업을 수행합니다. 사용자가 특정 경로를 탐색 할 때 함수를 실행하는 관용적 인 방법이 있지만 탐색 할 때 함수가 아닌가?

+0

**로 ** 이동하면 다른 경로 (멀리 이동)에서 오는 것입니다. 그래서 항상 해고 당합니다. –

답변

2

onExit 후크를 ui-router으로 지정하면 단일 상태로 지정할 수 있습니다. 하지만 그 안에 $scope에 액세스 할 수 없습니다.

처리하려면 공유 가능한 데이터가있는 서비스를 유지 관리해야합니다. 해당 공유 데이터를 원하는 상태의 onExit 후크에서 변경하십시오. 그런 다음 컨트롤러 내에서 동일한 서비스에 액세스 할 수 있습니다.

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

이것은 가장 유용한 솔루션처럼 들리지만, 하나의 변수 만있는 상태의 서비스를 만들고 싶지는 않습니다. scope 대신에'rootScope'을 사용하여이 문제를 해결할 수 있었지만 좋은 해결책은 아닙니다. –

+1

rootScope에 가지 마시고, service.rather를'sharedDataService'와 같은 일반적인 이름으로 말 하시고 거기에 변수를 주시면 장래에 더 많은 변수 데이터와 메소드를 가질 수 있습니다 .. –

+0

' $ 범위. $ 파괴'. 각도의 config 함수에서 $ stateProvider를 사용하여 서비스를 주입하려고 시도했지만 작동하지 않습니다. –

관련 문제