event - angularjs ui router login



각도 ui-router URL로 이동 (3)

나는 비슷한 문제가 있었고 $location 은 도움이되지 않았기 때문에 url 에서 state 를 가져 오는 함수를 작성했습니다.

NB : ui-router.stateHelper 기반으로 중첩 된 상태 를 사용하고 있으므로 중첩 된 상태 객체를 통과하여 URL 일치를 테스트합니다. 중첩 된 상태를 정의하기 위해 도트 표기법을 사용할 때 약간 다를 것입니다. 중첩 된 상태를 전혀 사용하지 않으면 훨씬 더 쉽습니다!

function goPath (path) {
    var target;

    var arr = path.match(/\/\w+/g);
    var i = 0;

    var testState = function (state, i) {
        if (state.url === arr[i]) {
            target = state;
            if (state.children && state.children.length && arr.length > i+1) {
                i++;
                state.children.forEach( function (childState) {
                    testState(childState, i);
                });
            } 
        }
    };

    myStatesObj.forEach( function (state) {
        testState(state, i);
    });

    $state.go(target.name);
};

URL이있는 경우 $state.go() 를 사용하는 방법은 무엇입니까?

또는 URL을 기반으로 한 상태를 얻을 수 있습니까? (그리고 $state.go(state) 사용하는 것보다)

다른 외부 모듈을로드 할 때까지 기다리는 $urlRouterProvider.otherwise() 를 가로 챌 필요가 있었기 때문에 물었습니다. 이제는 otherwise() 을 호출하는 URL을 호출하고 계속 호출해야합니다.


나는 비슷한 상황에 있었고, 내가 한 일은 위치를 다른 경로로 바꾸고 이것을 다음과 같은 타임 아웃 후에 현재로 리셋한다.

var path = $location.path();
$location.path("/");

$timeout(function(){
    $location.path(path).replace(); //use .replace() so the empty path won't go to the history
},0);

$state.go() 대신 $location 서비스를 사용할 수도 있습니다.

$location.path(url)

# in URL을 사용하지 않도록주의하십시오. window.location.href 사용할 수도 있습니다.





angular-ui-router