Vues nommées

Parfois vous avez besoin d'afficher différentes vues en même temps plutôt que de les imbriquer, c.-à-d. créer un affichage avec une vue sidebar et une vue main par exemple. C'est ici que les routes nommées entrent en jeu. Au lieu d'avoir une seule balise de vue, vous pouvez en avoir une multitude et donner à chacune d'entre elles un nom. Un router-view sans nom aura comme nom par défaut : default.

<router-view class="view one"></router-view>
<router-view class="view two" name="a"></router-view>
<router-view class="view three" name="b"></router-view>

Une vue est rendue en utilisant un composant, donc de multiples vues nécessitent de multiples composants pour une même route. Assurez-vous d'utiliser l'option components (avec un s) :

const router = new VueRouter({
  routes: [
    {
      path: '/',
      components: {
        default: Foo,
        a: Bar,
        b: Baz
      }
    }
  ]
})

Une démo de cet exemple peut-être trouvée ici.

Vues nommées imbriquées

Il est possible de créer des dispositions complexes en utilisant les vues nommées avec les vues imbriquées. Quand vous le faites, vous devez nommer les composants imbriqués de router-view utilisés. Voyons cela avec un panneau de configuration exemple :

/parametres/emails                                     /parametres/profile
+-----------------------------------+                  +------------------------------+
| UserSettings                      |                  | UserSettings                 |
| +-----+-------------------------+ |                  | +-----+--------------------+ |
| | Nav | UserEmailsSubscriptions | |  +------------>  | | Nav | UserProfile        | |
| |     +-------------------------+ |                  | |     +--------------------+ |
| |     |                         | |                  | |     | UserProfilePreview | |
| +-----+-------------------------+ |                  | +-----+--------------------+ |
+-----------------------------------+                  +------------------------------+
  • Nav est juste un composant standard.
  • UserSettings est un composant de vue.
  • UserEmailsSubscriptions, UserProfile, UserProfilePreview sont des composants de vue imbriqués.

Note : mettons de côté la partie HTML / CSS de cette disposition et concentrons nous sur le composant utilisé en lui-même.

La section <template> pour le composant UserSettings de la disposition ci-dessus devrait ressembler à quelque chose comme cela :

<!-- UserSettings.vue -->
<div>
  <h1>Paramètres utilisateurs</h1>
  <NavBar/>
  <router-view/>
  <router-view name="helper"/>
</div>

Le composant de vue imbriqué est omis ici mais vous pouvez le trouver dans le code source complet de l'exemple ci-dessus ici.

Puis vous pouvez achever la disposition ci-dessus avec la configuration de route :

{
  path: '/parametres',
  // Vous pouvez également avoir des vues nommées à la racine
  component: UserSettings,
  children: [{
    path: 'emails',
    component: UserEmailsSubscriptions
  }, {
    path: 'profile',
    components: {
      default: UserProfile,
      helper: UserProfilePreview
    }
  }]
}

Une démo de cet exemple peut-être trouvée ici.