首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用vue-路由器正确设置main.js和layout.vue

如何使用vue-路由器正确设置main.js和layout.vue
EN

Stack Overflow用户
提问于 2020-02-06 19:48:12
回答 1查看 476关注 0票数 0

伙计们,今天好,

我正在试验rails 6(webpack)和vue js。然而,我发现很难在我的layout.vue组件中设置“路由器-视图”元素。我不确定这是否与涡轮机有关,还是我做错了什么。任何帮助都将不胜感激。

首先是index.html.erb,它只是一个带有webpacker标签来加载main.js的索引页面。

代码语言:javascript
复制
 <%= javascript_pack_tag 'main' %>
 <div id='hello'>
 </div>

接下来是main my main.js

代码语言:javascript
复制
import TurbolinksAdapter from 'vue-turbolinks'
import Vue from 'vue/dist/vue.esm'
import router from 'router'
import Layout from 'layout.vue'

Vue.use(TurbolinksAdapter)

document.addEventListener('turbolinks:load', () => {
    new Vue({
    router: router,
    render: h => h(Layout)
  }).$mount('#hello')
})

接下来是我的router.js.

代码语言:javascript
复制
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

export default new VueRouter({
    routes: [
        {
            path: '/',
            name: 'layout',
            component: Vue.component('Layout', require('layout.vue')),
            children: [
                { path: 'test', name: 'test', component: Vue.component('Test', require('app.vue')) }
            ]
        }
    ]
})

最后是layout.vue,这里是爆炸的地方

代码语言:javascript
复制
<template>  
  <div id='app'>
    <div class='container-fluid'>
      <div class='wrapper'>
        <sidebar></sidebar>
        <router-view/>
      </div>      
    </div>
  </div>
</template>
<script> 
import Sidebar from 'sidebar.vue'
export default {
  data: function () {
    return {  message: "Testing"  
    }
 },
  components: {Sidebar}
}
</script>

我得到的错误是

代码语言:javascript
复制
[Vue warn]: Unknown custom element: <router-view> - did you register the component correctly?
found in Layout> at app/javascript/layout.vue
EN

回答 1

Stack Overflow用户

发布于 2020-02-06 23:19:32

在注册之前,您应该导入布局和其他组件。假设组件vue文件位于根级:

代码语言:javascript
复制
import Vue from 'vue'
import VueRouter from 'vue-router'
import Layout from './layout.vue'
import Test from './test.vue'

Vue.use(VueRouter)

export default new VueRouter({
    routes: [
        {
            path: '/',
            name: 'layout',
            component: Layout,
            children: [
                { path: 'test', 
                  name: 'test', 
                  component: Test 
                 }
            ]
        }
    ]
})

希望它适合你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60102474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档