2017-02-27 4 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内部の一部のHTMLなどを追加する。しかし、この実行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 
    } 
    }) 

EDIT:

私は怒鳴るが解決され、問題が何であるかを理解するために私にしばらく時間がかかりました。単に、ui.routerに何も問題はありませんが、設定が間違っています。説明しようとしましょう。あなたはxyz状態を要求したとき

は、ui.router拳は、ホームテンプレートをロードし、そしてそれはhomeの内側と終了abcxyzabcテンプレートをロードしようとしました。 ui.routerはテンプレートの中に正しい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'の子で 'home.abc'の子は' 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}); 

     } 
    }); 
}) 
関連する問題