Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向vue路由器注册全局组件_Javascript_Vue.js_Vue Router - Fatal编程技术网

Javascript 如何向vue路由器注册全局组件

Javascript 如何向vue路由器注册全局组件,javascript,vue.js,vue-router,Javascript,Vue.js,Vue Router,我将Vue.js与Vue cli一起使用。我为网页设置选择了。 我连接了main.js文件以进行路由,尽管我找不到全局注册组件的方法 main.js import Vue from 'vue' import VueRouter from 'vue-router' import App from './App' import Companies from './components/pages/Companies' import Income from './components/pages/In

我将Vue.js与Vue cli一起使用。我为网页设置选择了。 我连接了main.js文件以进行路由,尽管我找不到全局注册组件的方法

main.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
import Companies from './components/pages/Companies'
import Income from './components/pages/Income'
import Login from './components/pages/Login'

Vue.use(VueRouter)

let router = new VueRouter()

router.map({
  '/companies': {
    component: Companies
  },
  '/income': {
    component: Income
  },
  'login': {
    component: Login
  }
})

router.start(App, 'body')
App.vue

<template>
  <div>
    <router-view></router-view>
  </div>
</template>
<script>
import {Auth} from './lib/api'
import Loader from './components/Loader'

export default {
  components: {
    Loader
  },
  ready () {
    Auth.isLoggedIn().then(
      (response) => {
        if (response.data === false) {
          this.$router.go('/login')
        } else {
          this.$router.go('/companies')
        }
      },
      (response) => {
        this.$router.go('/login')
      }
    )
  }
}
</script>

从“./lib/api”导入{Auth}
从“./components/Loader”导入加载程序
导出默认值{
组成部分:{
装载机
},
就绪(){
Auth.isLoggedIn()。然后(
(回应)=>{
如果(response.data==false){
这是。$router.go(“/login”)
}否则{
此.$router.go(“/companys”)
}
},
(回应)=>{
这是。$router.go(“/login”)
}
)
}
}
当我在某些视图中使用加载器组件时,我得到以下警告

[Vue warn]:未知自定义元素:-您是否正确注册了组件?对于递归组件,请确保提供“name”选项

我在组件中提供了名称,没有任何区别。我正在登录视图中使用加载器组件。

我发现我应该在我将要使用的组件中定义组件,或者全局定义组件。不过,我无法找到如何使用路由全局定义它。

按照您现在的设置方式,加载程序组件仅在应用程序组件的模板中本地可用

路由对全局组件注册没有影响,就像没有路由器一样:

// main.js, before all the router stuff:
import Loader from './components/Loader'
Vue.component('loader', Loader)

或者在您的登录组件中本地注册它。由于您已经在App.vue中执行了此操作,您知道如何使用Loader.vue

我不知道您可以在没有根vue实例的情况下注册它。谢谢