Vuejs - 路由器孩子

新手上路,请多包涵

我试图弄清楚 VueJS 中的子路由是如何工作的。我认为,如果我有一个包含指向每个新闻项目的链接的新闻概述,那么我可以使用子路由来查看新闻项目,但它并没有像我预期的那样工作。

是我做错了还是?

 const router = new VueRouter({
    routes: [
    {
      path: '/news',
      name: 'news',
      component: News,
      children: [
        {
          path: ':id',
          name: 'newsitem',
          component: Newsitem
        }
      ]
    }
  ]
});

我创建了一个 jsfiddle 来展示我希望它如何工作。

如果我在 javascript 中取消注释路由器,那么它可以正常工作,但不适用于儿童。

原文由 Martin- 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 338
2 个回答

就像 Moersing.Lin 说你忘了在你的新闻组件中放一个 <router-view>

这是您的小提琴的一个工作示例:

 const News = {
  template: `<div>
<h1>News</h1>
<br><br>
<router-view></router-view>
</div>
`
}
const Newsitem = {
  template: "<h2>News {{this.$route.params.id}}</h2>"
}

const router = new VueRouter({
  routes: [{
    path: '/news',
    name: 'news',
    component: News,
    children: [{
      path: ':id',
      name: 'newsitem',
      component: Newsitem,
    }]
  }]
});

new Vue({
  el: '#app',
  router,
}).mount('#app');
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

<div id="app">
  <ul>
    <li>
      <router-link :to="{ name: 'news'}">News list</router-link>
    </li>
    <li>
      <router-link :to="{ name: 'newsitem', params: { id: 'item-1' }}">Item 1</router-link>
    </li>
    <li>
      <router-link :to="{ name: 'newsitem', params: { id: 'item-2' }}">Item 2</router-link>
    </li>
  </ul>
  <router-view></router-view>
</div>

原文由 Sebastian 发布,翻译遵循 CC BY-SA 3.0 许可协议

我明白了,需要一个 Vue 路由器 <router-view></router-view> ,但是在你的代码中,有 root 组件,但是你忘记了 parent ,它需要一个 <router-view></router-view> 也是。

https://jsfiddle.net/v28yw3g5/

原文由 Moersing.Lin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题