2017-11-28 3 views
0

the documentに従って私のサブ状態と$ state.goの名前付きビューを親状態から作成しようとしましたが、失敗しました。 Here is the plunkerを編集してください。私はnavTreeModalがサーバーからフェッチに対して左側のナビゲーションパネルを表示するには、動的に生成状態を使用していますので、私はこれをやろうとしている

<!DOCTYPE html> 
 
<html ng-app="demo"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>Demo</title> 
 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.js"></script> 
 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.js"></script> 
 
    <script> 
 
     let app = angular.module('demo', ['ui.router']); 
 
    
 
     app.config(['$urlRouterProvider', '$stateProvider', function ($up, $sp) { 
 
     $sp.state('state1', state1); 
 
     $sp.state('state1.state2', state2); 
 
     $up.otherwise('/state1'); 
 
     }]); 
 
     
 
     let state1 = { 
 
     url: '/state1', 
 
     controller: ['$state', function ($st) { 
 
      this.stName = $st.current.name; 
 
      this.createSubState = function(){ 
 
      $st.go('state1.state2', {message: 'message from ' + $st.current.name + ' to state2'}); 
 
      } 
 
     }], 
 
     controllerAs: '$ctrl', 
 
     template: `<div style="border-style: solid;"> 
 
      <p ng-click="$ctrl.createSubState()" style="cursor: pointer; color: blue;">{{$ctrl.stName}} begin</p> 
 
      <ui-view="stat2View"></ui-view> 
 
      <p>{{$ctrl.stName}} end</p> 
 
     </div>` 
 
     }; 
 
     
 
     let state2 = { 
 
     params: { 
 
      message: '' 
 
     }, 
 
     views: { 
 
      stat2View: { 
 
      controller: ['$transition$', '$state', function ($tr, $st) { 
 
       this.parentMessage = $tr.params().message; 
 
       this.stName = $st.current.name; 
 
      }], 
 
      controllerAs: '$ctrl', 
 
      template: `<div style="border-style: solid;"> 
 
       <p style="cursor: pointer; color: blue;">{{$ctrl.stName}} begin</p> 
 
       {{$ctrl.parentMessage}} 
 
       <p>{{$ctrl.stName}} end</p> 
 
      </div>` 
 
      } 
 
     } 
 
     }; 
 

 
    </script> 
 
    </head> 
 

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

 
</html>

があるので、私は与える必要がありますビューに名前を付けるか、それらが混乱する。

+0

を? – charlietfl

答えて

1

あなたはどこほとんどあり:corrected plunker私がやったこと

  • ui-view="state2View"が、それは親の状態を意味しているため、"[email protected]"なければならないstat2Viewui-view name="state2View"
  • ビュー名のプロパティである必要がありますu-view

EDIT

のどちらかのようなUIビューの宣言を使用します。具体的な問題は何ですか

<ui-view name="viewsName" /> 

または

<div ui-view="viewsName"></div> 
+0

あなたは火格子です!もう一度私を助けてくれてありがとう!文書の相対名によればOKであるはずなので、なぜ名前が「@」を使って絶対的でなければならないのか、まだ混乱しています。 – Oops

+0

これは嬉しいことです:)ビューの使用を開始するときは、コントローラ/コンポーネントを配置するビュー(元々レンダリングされているビューの状態)をどのビューに割り当てる必要があります。ドキュメントでは、最後のコードブロックは実際にそれを説明しています:https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views#view-names---relative-vs-absolute-names – scipper

+0

私はもう一度、ビューのショート/相対名を使ってテストしました;) – Oops

関連する問題