2016-06-08 4 views
0

브라우저 뒤로 버튼 탐색은 예상대로 작동하지만 추상 상태가 발생하면 원래 상태 (반드시 탐색되는 추상 상태의 하위)로 바뀝니다.브라우저 기록 : 추상 상태 건너 뛰기

추상 상태가 기록에 추가되지 않도록 각도 -Ui- 라우터 내에 방법이 있습니까?

+0

정말 명확하지 무슨 문제가 함께 우리는 또한 비교 한 후 다음 정기 상태를 일정한 상태로 추상적 인 상태에서 리디렉션 서비스를 작성한

angular .module('app') .run(appRunFunction); appRunFunction.$inject = ['$rootScope', 'localstorage']; function appRunFunction($rootScope, localstorage) { $rootScope.$on('$stateChangeSuccess', function(event, toState, toParam, fromState, fromParam) { localstorage.setValue('lastState', fromState.name); }); }; 

. 단순한 라우팅 레이아웃을 제공하고 예상되거나 예상되는 동작에 대한 참조를 제공합니다. – charlietfl

+0

상태 'a'는 일반 상태입니다. 상태 'a.b'는 추상 상태입니다. State 'a.b.c'는 일반적인 상태입니다. 상태 a.b.c에서 백 네비게이션은 상태 a.b로 이동하며, 이는 추상적이어서 전환을 거부하고 a.b.c를 사용자에게 반환합니다. 원하는 기능은 a.b.c에서 뒤로 버튼 탐색을 a.로 이동시킬 수 있습니다. –

+0

이것이 발생하는 주에 대해 ui 라우터 코드를 제공 할 수 있습니까? –

답변

1

같은 문제가 발생했습니다. 나는 당신에게 How do I get the Back Button to work with an AngularJS ui-router state machine?

그것은 나를 위해 열심히 약간의 도움이 될 것입니다 희망이

편집 간단한 해결책이 있어야한다 보인다 : 나는 그것을했다 에게. 우선, 이전 상태가 필요합니다 (또한 localstorage에 대한 래퍼가 있으므로 메서드를 변경해야합니다). 마지막 하나

angular 
.module('app.services') 
.factory('states', states); 

states.$inject = ['$state', 'localstorage']; 

function states($state, localstorage) { 
    var service = {reloadWithParam: reloadWithParam}; 
    return service; 

    function reloadWithParam(param, value) { 
    var fromState = localstorage.getValue('lastState') + '.' + localstorage.getValue('lastPage'); 
    var toState = $state.current.name + '.' + value; 
    var paramObject = {}; 
    paramObject[param] = value; 

    if (fromState === toState) { 
     window.history.go(-1); 
    } else { 
     $state.go($state.current, paramObject, { notify: false}); 
     localstorage.setValue('lastPage', value); 
    } 
    } 
}