2017-01-25 8 views
9

Я изучаю маршрутизатор Vue. И я хочу сделать программную навигацию (без <router-link>). Мой маршрутизатор и вид:

router = new VueRouter({ 
     routes: [ 
      {path : '/videos', name: 'allVideos', component: Videos }, 
      {path : '/videos/:id/edit', name: 'editVideo', component: VideoEdit }, 
     ] 
    }); 

    new Vue({ 
     el: "#app", 
     router, 
     created: function(){ 
      if(!localStorage.hasOwnProperty('auth_token')) { 
       window.location.replace('/account/login'); 
      } 

      router.push({ name: 'allVideos' }) 
     } 
    }) 

Так по умолчанию я нажимаю на маршрут «AllVideos» и в этом компоненте у меня есть кнопка и метод перенаправления на « кнопку» editVideo»:

<button class="btn btn-sm btn-warning" @click="editVideo(video)">Edit</button> 

метод:

editVideo(video) {router.push({ name: 'editVideo', params: { id: video.id } })}, 

Он отлично работает. Но когда я пытаюсь получить идентификатор внутри компонента VideoEdit с помощью $route.params.id я получил ошибку неперехваченного ReferenceError: $ маршрутов не определен

Может быть, это потому, что я не использую НПЕ теперь только версию ТПСА из Vue и Vuerouter. Любые решения? Благодаря!

Обновлено: кстати в Вью инструмента Dev я вижу $ экземпляр маршрута внутри компонента

Обновлено:

var VideoEdit = Vue.component('VideoEdit', { 
      template: ` <div class="panel-heading"> 
         <h3 class="panel-title">Edit {{vieo.name}}</h3> 
        </div>`, 
       data() { 
        return { 
         error: '', 
         video: {}, 
       } 
      },   
      created: function() { 
        console.log($route.params.id); 
      }, 
     }) 
+1

Не могли бы вы положить, что часть из код компонента, где вы выбираете param.id? –

+0

код добавлен. Вы можете проверить. Спасибо! –

+1

вы можете попробовать console.log (это $ route.params.id) вместо –

ответ

11

Благодаря Sandeep Rajoria

мы нашли решение, нужно использовать this.$route кроме $route внутри компонента

+2

после добавления 'this' я получаю' TypeError: Не могу прочитать свойство '$ route' of undefined' –

+0

Нужно больше деталей. Для меня это работает –

+0

Теперь его работа –

1

Если вы используете vue v2 & vue-router v2, то в vue-cli генерируется шаблонный способ доступа к маршрутизатору, например. от компонента импорта маршрутизатор (вывозимых в маршрутизатор/index.js)

<script> 
    import Router from '../router'; 

затем в своем коде вы можете использовать функции маршрутизатора, как:

Router.push('/contacts'); // go to contacts page 
2
import Vue from 'vue' 
import Router from 'vue-router'; 

Vue.use(Router) 

const router = ... 
+2

Некоторое повествование было бы неплохо объяснить, что вы здесь сделали. –