使用Vue路由器时如何在VueJS组件之间传递数据?

时间:2017-04-03 17:59:17

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

我设置了这些路线:

Vue.use(Router)
export default new Router({
  routes: [
    {
      path: '/group/:id',
      name: 'Group',
      component: GroupContainer,
      children: [
        {
          // when /group/:id/posts is matched
          path: 'posts',
          component: ViewPosts
        },
        {
          // when /group/:id/topics is matched
          path: 'topics',
          component: ViewTopics
        },
        {
          // when /group/:id/people is matched
          path: 'people',
          component: ViewPeople
        }
      ]
    }
  ]
})

因此,组件组件有一个带有路由器视图的模板

<template>
  <div class="group">
    I am a group page
    <router-view></router-view>
  </div>
</template>

因此,组件组件最终成为ViewPosts,ViewTopics或ViewPeople的父组件,但它不直接包含组件。

将数据从父级(组)传递给子级(ViewPosts ...)并允许子级发送到父级的好系统是什么?

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是将属性和处理程序添加到router-view

<div class="group">
  I am a group page
  <router-view :topics="topics"
           :people="people"
           :posts="posts"
           @topic-emitted="onTopicEmitted">
  </router-view>
</div>

这是一个快速example