javascript - Vue路由器工作不稳定

标签 javascript vuejs2 vue-router

我花了一整天的时间试图找出是什么导致这个例子失败:

Vue.use(VueRouter);

var PlayerDetail =  {
  template: '<div>FOO</div>'
};
var PlayerList =  {
  template: '<div>BAR</div>'
};

var routes = [{
  path: '/player',
  component: PlayerList
}, { 
  path: '/detail',
  component: PlayerDetail
}];

var appRouter = new VueRouter({
  routes
});

var appVm = new Vue({
  appRouter
}).$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">
  <h1>Hello App!</h1>
  <p>
    <router-link to="/player">foo</router-link>
    <router-link to="/detail">bar</router-link>
  </p>
  <router-view></router-view>
</div>

如果它完全像这个一样有效:

Vue.use(VueRouter);

var Foo = {
  template: '<div>FOO</div>'
};
var Bar = {
  template: '<div>BAR</div>'
};

var routes = [{
  path: '/foo',
  component: Foo
}, {
  path: '/bar',
  component: Bar
}];

var router = new VueRouter({
  routes
});

var appVm = new Vue({
  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">
  <h1>Hello App!</h1>
  <p>
    <router-link to="/foo">foo</router-link>
    <router-link to="/bar">bar</router-link>
  </p>
  <router-view></router-view>
</div>

如您所见,这两个示例实际上是相同的代码,但在第一个示例中,我收到 TypeError: 当路由器渲染时,路由未定义。

还有其他人看到我在这里缺少的东西吗?

最佳答案

您正在传递 Vue 构造函数 { appRouter },它是 { appRouter: appRouter } 的简写。 Vue 构造函数需要一个具有 router 属性的对象,而不是 appRouter 属性。

如果要使用对象属性简写传递路由器对象,则需要准确命名路由器对象 router:

Vue.use(VueRouter);

var PlayerDetail =  {
  template: '<div>FOO</div>'
};
var PlayerList =  {
  template: '<div>BAR</div>'
};

var routes = [{
  path: '/player',
  component: PlayerList
}, { 
  path: '/detail',
  component: PlayerDetail
}];

var router = new VueRouter({
  routes
});

var appVm = new Vue({
  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">
  <h1>Hello App!</h1>
  <p>
    <router-link to="/player">foo</router-link>
    <router-link to="/detail">bar</router-link>
  </p>
  <router-view></router-view>
</div>

关于javascript - Vue路由器工作不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44077428/

相关文章:

javascript - Angular 2 管道返回未定义

javascript - 动画 onClick - Jquery

javascript - 如何在提交时清除输入值,同时将值添加到跨度区域?

javascript - Vue.js 时间计数器

javascript - Vue 计算方法未被调用

vue.js - Vuejs : data through the router-view

javascript - Vue.js 路由器查询数组

vue.js - <router-link> Vue Router @click 事件

vue.js - Vuex 正在重置已设置的状态

javascript - 无法读取未定义 jquery 滚动的顶部