2014-07-13 5 views
0

탐색 막대를 만들었으며 사용자가 현재 상태에 해당하는 링크를 클릭해도 아무런 변화가 없습니다. 예를 들어 /about에 있으며 정보가 href="/about" 인 정보를 클릭하십시오. 메뉴가 열려 있습니다. 다른 링크 (예 : 다른 상태)를 클릭하면 작동합니다.각도 JS - 각도 UI 라우터 - 위치 기반의 현재 상태 리로드

현재 상태가 대상 상태와 같으면 상태 전이가 무시됩니다. 위치가 바뀌지 않았기 때문에 상태 전환이 시작되는지 궁금합니다.

menuItem.link/, /contact 또는 /about과 같은 일반 URI를 나타냅니다.

<div class="btn-group" dropdown is-open="status.isopen" ng-repeat="menu in menuModel"> 
    <button type="button" class="btn btn-primary dropdown-toggle"> 
     {{menu.text}} <span class="caret"></span> 
    </button> 
    <ul class="dropdown-menu" role="menu"> 
     <li ng-repeat="menuItem in menu.items"><a href="{{menuItem.link}}">{{menuItem.text}}</a></li> 
    </ul> 
</div> 

전환이 발생하지 않기 때문에 메뉴가 열려있는 것으로 보입니다. 동일한 상태에 있어도 강제로 전환 할 수 있습니까?

답변

0

URL을 변경 시도에 기본적으로 "#/about".. 각도 UI 라우터 추가하는 URL

앞에 "#"그래도 문제가 해결되지 않으면 무슨 일이 일어나고 있는지 감지하려면이 옵션을 사용

$scope.$on('$stateChangeStart', function(evt, toState, toParams, fromState, fromParams) { 
    console.log("To state is"+toState.name+", From State is "+fromState.name); 
    }); 

상태 변경이 전혀 시작되었는지 확인할 수 있습니다.

편집 :

$rootScope.$on('$stateChangeError', 
    function (event, toState, toParams, fromState, fromParams, error) { 
    console.log('$stateChangeError', event, toState, toParams, fromState, fromParams, error); 
    }); 

편집 - 해상도 : :이 조각 사용, 상태 변화가 발생되지 않는 이유를 확인하려면

당신이 /about에있을 때 을 다음 href입니다 /about, UI 라우터는/about 상태 안의 자식 상태를 찾습니다. 당신이 원하는 것은 URL이 "." 점은 현재 상태를 나타냅니다. 더 나은 구현을 원하면 href를 사용하는 대신 ui-sref=".about"을 사용할 수 있습니다. <a ui-sref="home">Home</a> | <a ui-sref="about">About</a> UI 라우터가 관련 href를 자동으로 생성하므로 문제가 해결됩니다. 당신이 바로 당신의 코멘트에서 언급 한 바와 같이

, 당신도 추가 PARAMS를 추가해야 할 수도 있습니다 - 자세한 내용을 여기에 : http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-sref

+0

내가 html5Mode 수 있도록, 그래서 나는'#'를 필요가 없습니다. – Sydney

+0

ok ..이 경우 다음을 시도하십시오. – nikjohn

+0

전환이 시작되지 않았습니다. 나는 위치가 바뀌지 않기 때문에 이것이 맞을 것 같아요. – Sydney