使用vue-router在Vue.js中同级组件?

时间:2016-07-06 18:15:52

标签: javascript vue.js

我有几个组件映射到几个不同的路由,我想知道为每个路由创建的组件是否被认为是数据传递方式的兄弟组件?目前还不清楚哪个组件是此结构中的父组件:

PageOne = Vue.extend( {
   template: "#page-one"
})
PageTwo = Vue.extend({
   template: "#page-two"
})
Home = Vue.extend({
  template: "#home"
})
var router = new VueRouter()
router.map({
  '/': {
    component: Home
  },
 '/PageOne': {
   component: PageOne
  },
'/PageTwo': {
  component: PageTwo
 }
})


var App = Vue.extend({})
router.start(App, "#app")

因此,如果我想将数据从Home路由传递到PageOne,我是否需要使用全局事件总线,或者我可以使用props将数据从一个路由传递到下一个路由? 这是一个演示:http://codepen.io/p-adams/pen/kXwxRR

1 个答案:

答案 0 :(得分:1)

您应该使用Vuex使用全局事件总线或状态管理,或者将它们设置为嵌套路由(http://router.vuejs.org/en/nested.html):

router.map({
  '/': {
    component: Home,
    subRoutes: {
      '/PageOne': {
        component: PageOne
      },
      '/PageTwo': {
        component: PageTwo
      }
    }
  }
}) 

如果您这样做,可以将道具传递给<router-view>

<div id="app">
  <router-view :foo="bar"></router-view>
</div>

http://router.vuejs.org/en/view.html