2017-02-27 1 views
0
$stateProvider 
    .state("home", { 
    url: "/home", 
    templateUrl: "templates/home.html", 
    controller: "homeCtrl" 
    }) 
    .state("home.abc", { 
    url: "/abc/:id", 
    templateUrl: "templates/abc.html", 
    controller: "abcCtrl" 
    }) 
    .state("home.abc.xyz", { 
    url: "/xyz", 
    templateUrl: "templates/xyz.html", 
    controller: "xyzCtrl" 
    }) 
    .controller('abctrl', function($scope, $state, $stateParams) { 
    $state.go('home.abc.xyz', { 
     'id': $stateParams.id 
    }); 
    }) 

----- 상태가 home.abc.xyz로 돌아간 후 다시 최종적으로 다시 집 상태로 돌아갑니다. 누가이 문제를 해결하는지 알려주세요.

+0

xyzCtrl''의 코드를 공유하시기 바랍니다. – 31piy

+2

을 상태 이유? 다른 상태로 재 - 지시 – Murwa

+0

우리가 xyzCtrl 내부의 HTMLs 추가됩니다. 그러나이 실행 state.go ('home.abc.xyz'후 { 'id': $ stateParams.id }); 부모의 집으로 돌아가는 상담원 – Naveen

답변

0

다음과 같이 시도해보십시오.

//... 
.state("home.abc.xyz", { 
    url: "/xyz", 
    templateUrl: "templates/xyz.html", 
    controller: "xyzCtrl", 
    params:{ 
     id: null 
    } 
    }) 

이 편집 :

나는 나에게 문제가 무엇인지 이해하는 걸 렸어요, 울부 짖는 소리는 솔루션입니다. 단순히 ui.router에 아무런 문제가 없지만 구성이 잘못되었습니다. 설명하려고 노력하겠습니다.

당신은 당신의 xyz 상태 ui.router 주먹로드 홈 템플릿을 요청한 다음은 home의 내부 및 abc에 마지막 xyzabc 템플릿을로드했습니다. 템플릿에 올바른 HTML이 없으므로 ui.router은 템플릿을 어디에 넣어야하는지 알기 때문에 은 home 템플릿 만로드합니다. 문제와 해결책을 여기에서 이해하시기 바랍니다.

$stateProvider 
    .state("home", { 
    url: "/home", 
    templateUrl: "templates/home.html", 
    controller: "homeCtrl" 
    }) 
    .state("home.abc", { 
    url: "/abc/:id", 
    views:{ 
     'abc': { 
      templateUrl: "templates/abc.html", 
      controller: "abcCtrl" 
     } 
    } 
    }) 
    .state("home.abc.xyz", { 
    url: "/xyz", 
    views:{ 
     'xyz': { 
      templateUrl: "templates/xyz.html", 
      controller: "xyzCtrl" 
     } 
    } 

    }) 
    .controller('abctrl', function($scope, $state, $stateParams) { 
    //this should not be part of any controller. 
    /*$state.go('home.abc.xyz', { 
     'id': $stateParams.id 
    });*/ 
    }) 

index.html을

<body> 
    <div ui-view></div> 
<body> 

home.html을

<div ui-view="abc"></div> 

<div ui-view="xyz"></div> 
abc.html
+0

시도해 보았지만 여전히 가정용 컨트롤러 – Naveen

+0

에이 문제를 해결하는 방법이 있습니까? – Naveen

+0

당신은'home.abc.xyz' 자식을'home.abc'가 아닌'home'의 자식으로 만들어서 결국'home.xyz'가되게하고'$ state.go ('home.xyz') ' – mbeso

0

답장을 보내 주셔서 감사합니다.

마지막으로이 솔루션이 효과적이었습니다.

app.run (함수 ($ rootScope, $ 위치, $ 상태 $ stateParams) {$ rootScope. ("$ stateChangeStart"기능에 $ (이벤트 TOSTATE, toParams, fromState, fromParams) {

 if(toState.name == "home.abc") { 

      $state.go('home.abc.xyz', {'id': toParams.id}); 

     } 
    }); 
}) 
관련 문제