vue-router 跨组件使用,vue-router是未定义

我在main.js中引入了vue-router。想在组件中使用router.go方法来进行路由,但是在组件中总是报错说router没有定义。那么,在不同组件之间该怎么使用vue-router。难道在每一个组件都引入vue-router,接着用Vue.use(VueRouter),然后实例化吗?
另外,jQuery也是在每个组件中重新引用才能使用,有什么办法在入口引入一次就可以吗?
main.js:

import Vue from 'vue'
import $ from 'jquery'
import VueResource from 'vue-resource'
import VueRouter from 'vue-router'

import App from './App'
import Login from './components/Login'
import MyHall from './components/MyHall'
import Register from './components/Register'

Vue.use(VueRouter)
Vue.use(VueResource)
var router = new VueRouter()

router.map({
  '/': {
    component: MyHall
  },
  '/login': {
    component: Login
  },
  '/register': {
      component: Register
  }
})

router.start(App, 'body')
阅读 12.5k
4 个回答

router的话在根组件中注册过,以后子组件都可以用this.$router的,比如this.$router.go('/index')

既然用了router,那我就假定你的html文件只有一个(比如用vue-cliwebpack模版),不同的web页面通过路由来显示、调用,那么你手动在index.html中引入js就可以了,用cdn的jq吧。

组件中使用router.go()的方法具体使用应该是:this.$route.router.go()

你如果直接使用router.go()那肯定是没定义

新手上路,请多包涵

TypeError: Cannot read property '$route' of undefined 登录成功跳转的时候也说未定义

router 你注册之后,就可以用 this.$router 来访问了,至于你说的jquery , 你可以用 Vue.prototype.$jq = $; 把他挂在原型上,这样,你也可以使用 this.$jq 来访问了。(另外,既然用了vue,那么jquery我觉得其实是可以不用的)

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