2017-09-06 2 views
0

Ich verwende einzelne Dateikomponenten mit Vue-Router und Vue-2.0 und ich habe ein Problem, das ich nicht in der Lage zu lösen scheinen. Das Objekt this.$route, das von einer Komponente aufgerufen wird, gibt immer leere Werte zurück.

z.B.

enter image description here

Messages.vue

<template> 
 
    <div class="container"> 
 
     <div class="row"> 
 
      <div class="col-md-8 col-md-offset-2"> 
 
       <div class="panel panel-default"> 
 
        <div class="panel-heading">Post List</div> 
 

 
        <div class="panel-body"> 
 
         <li v-for="item in items"> 
 
          {{ item.message }} 
 
         </li> 
 
        </div> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</template> 
 

 
<script> 
 
    export default { 
 
     created() { 
 
      console.log(this.$route); 
 
     }, 
 
     mounted() { 
 
      console.log('Component mounted.') 
 
     }, 
 
     data() { 
 
      return { 
 
       items: [ 
 
        {message: 'Foo'}, 
 
        {message: 'Bar'} 
 
       ] 
 
      } 
 
     }, 
 
    } 
 
</script>

App.js

import Vue from 'vue'; 
 
import VueRouter from 'vue-router'; 
 
import Messages from './components/Messages'; 
 

 
Vue.use(VueRouter); 
 

 
const routes = [ 
 
    { path: '/user/get/:id', component: Messages}, 
 
] 
 

 
const router = new VueRouter({ 
 
    routes 
 
}) 
 

 
const app = new Vue({ 
 
    router, 
 
    el: '#app', 
 
    components: { Messages } 
 
});

Jede Hilfe wird sehr geschätzt.

+0

, die die URL, die Sie in Ihrem Browser verwenden? Wenn es '/' ist, denke ich, dass es richtig funktioniert. Versuchen Sie '' parameter = 1' am Ende Ihrer URL zu setzen und überprüfen Sie, ob sich die 'query' im Router ändert. –

+0

@EvaldoBratti URL ist' user/get/2' – Svedr

Antwort

0

Sie müssen Vue hier nur mitteilen, um die Router-Ansichten zu rendern, indem Sie die Vue-Initialisierung ändern, indem Sie eine Vorlage hinzufügen, die die route-view-Direktive enthält.

const app = new Vue({ 
    router, 
    el: '#app', 
    template: '<router-view/>', 
    components: { Messages } 
}) 

Das sollte es für Sie arbeiten lassen.

+1

Das leitet mich einfach auf eine leere Seite um. Ich muss nur Zugriff auf diese. $ Route haben, damit ich die URL-Parameter extrahieren kann. – Svedr

0

Es ist schwierig zu wissen, was das Problem ist, weil Sie nicht den HTML-Code enthalten haben, der die Vorlage darstellt, die die Stammkomponente zum Rendern verwendet.

Wenn Ihre Stammkomponente eine Komponente router-view rendert, sollten die Routenparameter in der Komponenteninstanz Messages verfügbar sein.

Hier ist ein Beispiel mit Ihrem Setup: https://codepen.io/autumnwoodberry/pen/WEBEKd?editors=1010