vikkyshostak
@vikkyshostak
< This head full of dreams.

Vue.js Router: почему не работает this.$route.router.go()?

Почему не работает переход на страницу с использованием vue-router 0.7.13 + SweetAlert? Делаю вот так (Laravel 5.3):

article.blade.php:

<a href="#" v-on:click.prevent="deleteArticle('/articles/{{ $article->id }}/delete')">Delete</a>

app.js:

window.Vue = require('vue');
window.VueRouter = require('vue-router');
Vue.use(VueRouter);

var article_form = new Vue({
  el: '#article_form',
  data: {
    ...
  },
  methods: {
    ...
    ...
    deleteArticle: function (url) { // Кликаем на Delete
      var self = this;
      swal({
        title: "Are you sure?",
        text: "You will not be able to recover this imaginary file!",
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "Yes, delete it!",
        closeOnConfirm: false
      }, function () { // Кликаем на Yes
        self.$http.delete(url).then(function () {
          swal({
            title: "Deleted!",
            text: "Your imaginary file has been deleted.",
            type: "success"
          }, function () { // После клика на ОК должен быть редирект
            self.$route.router.go('/articles');
          });
        });
      });
    }
  }
});

Возникает ошибка:

TypeError: undefined is not an object (evaluating 'self.$route.router')

Пробовал ещё вот так: self.$router.go('/articles'); – та же ошибка. Почему-то для него $route ($router) идёт как undefined, хотя в PhpStorm они нормально «прокликиваются» и участвуют в подсказках, то есть проекту известны все функции/методы из vue-router.

В чём может быть дело?
  • Вопрос задан
  • 524 просмотра
Пригласить эксперта
Ответы на вопрос 1
@wostex
А где инстанс роутера?

const router = new VueRouter({
  routes: [{path:'/', component: ...}]
});


и в инстанс Vue его нужно добавить:

var article_form = new Vue({
  el: '#article_form',
  router,
...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы