2017-12-20 29 views
3

Vuetifyはメニュー、ツールバー、コンテンツ、およびフッターを含むかなり柔軟なレイアウトスキームを備えています。 Google ContactsVue + Vuetify + vue-router:ページに基づいてツールバーの内容を変更する

enter image description here

は、レイアウトの標準設定を考えてみましょうは、サイト全体の固定メニューが、表示されるページで変化する動的ツールバーで、ルータによって制御されます。どのページが表示されているかに応じてツールバーのコンテンツを変更するためのベストプラクティスは何ですか? Google Contactsの例では、検索バーはContactsページにのみ表示されます。

私のVueに関する初心者の知識に基づいて、scoped slotのルータレイアウトを定義しているようです。これを達成するための他の多くの方法があります。しかし、私は、ページ全体にわたってツールバーのコンテンツを定義するきれいでモジュラーな方法を探しています。

アイデア:しばらく前VUE-ルータdidn't support named slotsのよう

  • 。しかし、これにはchanged recentlyがあるようですが、ドキュメントはありません。

  • Named views vue-routerを使用してツールバーのコンテンツをメインページに結びつけるのに適しているようです。しかし、ツールバーがスロットを持つようにメインページと「話す」ための良い方法ではないようです。

+0

おそらく 'meta'フィールドはこれを助けることができますか? https://router.vuejs.org/ja/advanced/meta.html – Traxo

+0

他のルートの連絡先検索バーを再利用することはありません。あなたがそれを必要とするとき、もっと多くのケースがありますか? 'v-if =" $ route.name === 'Contacts' "'だけが必要な場合は、それ以外のものは残念です。 – Traxo

答えて

1

アプリケーションで複数のルータビューを定義できます。

<v-app id="app"> 
    <router-view name="navigation"></router-view> 
    <router-view></router-view> 
</v-app> 

その後、あなたは、両方のルータビューのコンポーネントのルートを定義することができます:あなたのレイアウトは非常に、このように単純化して見えます想像

{ 
    path: '/hello', 
    components: { 
    default: MyHelloComponent, 
    navigation: MyNavigationForHelloComponent 
    } 
} 
関連する問題