2017-04-20 7 views
0

私は、「ホーム」ビューと「メッセージング」ビューと「会話」ビューを持っています。私はいつも 'メッセージング'ビューを表示するために '家庭'のビューをしたい。これは簡単な部分ですが、私は以下のコードでそれを行いました。しかし、ユーザーが 'メッセージング'ビューでリンクをクリックすると、次のようになります。AngularJSでは、「ルート」ビューと同じ「ビュー」を表示するように状態/ビューを設定する方法と、必要に応じて孫のビューを設定する方法はありますか?

  1. 「会話」ビュー(以下のサンプル)に移動します。 または
  2. 「会話」ビューを「メッセージング」の子として表示します。

ここまでは私がこれまで持っていたものへのリンクです。私はこれを働かせるためにかなりの時間を費やしてきており、それが '1'と '2'の両方を行うことができませんでした。ここに私の現在の状態設定があります。あなたは、このリンクでは、完全な例を見ることができます:

http://plnkr.co/edit/eVhPAr4zGmsbiNUKdzz3?p=preview

homeApp.config(function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/'); 
    $stateProvider 
     .state('home', { 
      url: '/', 
      views: { 
       '': { templateUrl: 'home.html', controller: "homeController" }, 
       '[email protected]': { templateUrl: 'messaging.html', controller: "messagingController" } 
      } 
     }) 
     .state('conversations', { 
      url: '/conversations', 
      views: { 
       '': { templateUrl: 'conversations.html', controller: "conversationsController" } 
      } 
     }) 
}); 
+1

私はあなたの問題を理解することはよく分からない。私はそれはあなたがそれを行うが、this plunkerを見てみたい方法だか分からない

が、それはこのように、ネストされた状態を使用して仕事をしていません。ユーザーが新しいビューで会話ビューを開くか、メッセージングビューの下で開くことができるようにするには、それは間違いありませんか? – JeanJacques

+0

@JeanJacques - はい。基本的には、「会話」の全画面または内部のメッセージを開きます。 – Bloodhound

答えて

1

次に、あなたがそれを行うためにnested states or nested viewsを使用しようとすることができます。

.state('home.nestedView', { 
     url: '/nestedView', 
     views: { 
      '': { templateUrl: 'conversations.html' } 
     } 
    }) 
+0

これは近いですが、ビューを読み込むために「ui-sref」に依存しています。私はそれをすることはできません。代わりにビューをロードするには、clickイベントの関数が必要です。あなたのサンプルを '$ state.go( "。nestedView");'を使用するように変更しました。クリックイベントでそれは働いた。 http://plnkr.co/edit/bkuCFvrFuRHOD15MQ0PP?p=preview。あなたがおっぱいと答えを更新できるなら、私はそれを受け入れるでしょう。 – Bloodhound

+0

@Bloodhound私は 'ui-sref'を使わず、' ng-click'で呼び出された関数を使うようにplunkerを更新しました。しかし、これを実現するためには 'ui-sref'を使うべきだと思います。なぜなら、コードを読むのが簡単だからです。リンクがどこに行くのかを知るためにコントローラを参照する必要がないからです。 – JeanJacques

+0

ui-srefを使用してそのロジックを条件付きにするにはどうすればよいですか?覚えておいて、それは私の質問の全体のポイントです。 1つのリンクで全体のビューを変更するか、「メッセージング」の下でビューを開くことができます。 (私は、画面サイズを評価するようなロジックを使って、どちらを行うかを決定します) – Bloodhound

関連する問題