Vue 路由器工作不稳定
Vue router working erraticaly
我花了一整天的时间试图找出导致此示例失败的原因:
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: route is undefined when the router is rendering。
还有其他人看到我在这里遗漏的东西吗?
我认为路径和组件组合不正确
var routes = [{
path: '/player',
component: PlayerDetail
}, {
path: '/detail',
component: PlayerList
}];
您正在传递 Vue
构造函数 { appRouter }
,它是 { appRouter: appRouter }
的 shorthand。 Vue
构造函数需要一个具有 router
属性 而不是 appRouter
属性.
的对象
如果要使用对象 属性 传递路由器对象,则需要准确命名路由器对象 router
shorthand:
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>
我花了一整天的时间试图找出导致此示例失败的原因:
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: route is undefined when the router is rendering。
还有其他人看到我在这里遗漏的东西吗?
我认为路径和组件组合不正确
var routes = [{
path: '/player',
component: PlayerDetail
}, {
path: '/detail',
component: PlayerList
}];
您正在传递 Vue
构造函数 { appRouter }
,它是 { appRouter: appRouter }
的 shorthand。 Vue
构造函数需要一个具有 router
属性 而不是 appRouter
属性.
如果要使用对象 属性 传递路由器对象,则需要准确命名路由器对象 router
shorthand:
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>