这个.vue js组件中的$ route只返回undefined

时间:2017-05-14 19:01:43

标签: javascript vue.js vue-component vue-router

我试图将url中的参数转换为vue组件中的方法。

我已经读过,我打算使用这个。$ route但无论我做什么都返回undefined,我已经看到了一些不同的类似问题,但是他们的修复方法却没有。'为我工作。

<template>
  {{ this.$route.query }}
</template>
<script>
  export default {
    name: 'cards',
    data: () => ({
      items: [
        {
          id: 1,
          title: '8 myths about mobile interfaces',
          link: 'https://medium.muz.li/8-myths-about-mobile-interfaces-390d9e2cee33',
          folder: 'medium',
          order: 1,
        },
        {
          id: 2,
          title: 'Asking your user’s gender, the new skeuomorphism, upside-down UIs and more',
          link: 'https://uxdesign.cc/asking-your-users-gender-the-new-skeuomorphism-upside-down-uis-and-more-e108ef888030',
          folder: 'medium',
          order: 2,
        },
      ],
    }),
    methods: {
      link: () => {
        console.log(this.$routes.query);
      },
    },
  };
</script>

我在模板中使用了这个。$ route,它可以正常工作并显示出来。

我不知道我需要做些什么来让它显示参数。

我是vue的新手所以可能整个过程都是错误的,但基本上应用程序会读取链接并只显示文件夹内容,所以如果它的网址是/ cards?folder = medium它只会显示数据与文件夹数据。所以,如果你知道更好的方式,请告诉我!

否则,你能看出为什么它没有显示路线吗?

如果有帮助,请点击我的路由器vue文件:

import Vue from 'vue';
import VueRouter from 'vue-router';

import cards from './cards/cards';

Vue.use(VueRouter);

export default new VueRouter({
  routes: [
    {
      path: '/cards',
      name: 'cards',
      component: cards,
    },
  ],
  mode: 'history',
});

2 个答案:

答案 0 :(得分:9)

要访问this,您不应使用箭头功能。请改用常规功能:

methods: {
  links: function() {
    console.log(this.$route) // should work
  }
}

这在Vue文档中有说明,例如https://vuejs.org/v2/api/#data底部注释。

答案 1 :(得分:1)

您可以使用object definition method shorthand(获得与Egor Stambakio's answer中相同的结果,但是字符更少,是的!)。

methods: {
  links() {
    console.log(this.$route) // should also work
  }
}