2016-03-29 17 views
0

ネストされた状態で複数の名前付きビューを使用しているとき、Angular UIルータに関する質問があります。基本的に私は、2つの名前付きビューを指すテンプレートを持つ抽象的な状態を持っています。これらの2つの名前付きビューは、両方のサブ状態で定義されます。 URLを/ testに固定したままにします。角度Uiルータ複数の名前付きビューとネスト状態

いずれかのサブ状態に移行すると、最初のサブ状態のみに対応するビューが表示されます。何故ですか?私は本当に私が

JSFiddleはこちら学ぶことができるので、誰かが私のためのコンセプトを明確にすることを願って:それはあなたがそれらを定義したそれによって順序が実際にhttps://jsfiddle.net/adeopura/e2c5n14o/16/

angular.module('myApp', ['ui.state']) 
.config(['$stateProvider', '$routeProvider', 
function ($stateProvider, $routeProvider) { 
    $stateProvider 
     .state('test', { 
      abstract: true, 
      url: '/test', 
      views: { 
       'main': { 
        template: '<h1>Hello!!!</h1>' + 
           '<div ui-view="view1"></div>' + 
           '<div ui-view="view2"></div>' 
       } 
      } 
     }) 
     .state('test.subs1', { 
      url: '', 
      views: { 
       'view1': { 
        template: "Im 1View1" 
       }, 
       'view2': { 
        template: "Im 1View2" 
       } 
      } 
     }) 
     .state('test.subs2', { 
      url: '', 
      views: { 
       'view1': { 
        template: "Im 2View1" 
       }, 
       'view2': { 
        template: "Im 2View2" 
       } 
      } 
     }); 
}]) 
.run(['$rootScope', '$state', '$stateParams', function ($rootScope, $state, $stateParams) { 
    $rootScope.$state = $state; 
    $rootScope.$stateParams = $stateParams; 
    $state.transitionTo('test.subs1');//I see the data corresponding to the test.subs1 
    // Assume here that there are lots of different state transitions in between unrelated to the test1 state 
    $state.transitionTo('test.subs2');//I still see the data corresponding to the test.subs1, why is that? 

}]); 
+0

役立ちます – beauXjames

+0

参照のためにフィドルを更新しました。 – AshD

答えて

0

私の同僚の一人が、この場合に起こっていることを説明しました。

  1. state.transitionTo(「test.subs2」)アプリケーションは状態「test.subs2」一度状態「test.subs2」内の
  2. に行くことになり、URLが/に​​変更されます。下には、のように説明テスト
  3. これにより、角度UIルーターは適切な状態に変更を開始します。
  4. 適切な状態が状態「test.subs1」だろうURL /テストに一致する最初のものであり、

・ホープこれはあなたの「新しい」フィドルは、それが外部参照です欠けている誰か

0

です。 test.sub1の前にtest.sub2を定義するようにスワップすると、@ test.sub2を開始します。

+0

それは問題です、そうです。なぜそれがtest.sub1に行かなければならないのですか?私がtest2に移行しようとすると、私はいつもstate1になってしまいます。そうすれば、問題をはっきりと示すためにコードを少し更新しました。 – AshD

0

あなたはいずれかのサブ状態に割り当てられたURLを持っていないからだと思います。私はそれらに独自のURLパスを与え、あなたがそのような状態を参照できるかどうかを見てみるでしょう。

+0

私はURLを変更したくありません。より多くのユーザ向きのURLは、私が考慮する必要があるより多くのエラーメッセージを暗示します。 – AshD

関連する問題