在此question中,有一个很好的solution例子。但是当我尝试通过名称使用路由时,此方法不起作用。
我尝试过类似的事情:
<v-tabs v-model="active">
<v-tab v-for="tab of tabs" :key="tab.id" :to="{ name: tab.route_name }">
{{ tab.name }}
</v-tab>
<v-tab-item v-for="tab of tabs" :key="tab.id" :value="{ name: tab.route_name }">
<router-view></router-view>
</v-tab-item>
</v-tabs>
data() {
return {
active: '',
tabs: [
{ id: 1, name: "Task", route_name: 'task' },
{ id: 2, name: "Project", route_name: 'project' }
]
};
}
const routes = [
{
path: '/task',
name: 'task',
component: Task
},
{
path: '/project',
name: 'project',
component: Project
},
];
它只是中断了,因为:value不能是Object。
我创建working jsfiddle和breaking version进行游戏。
P.S。我无法在答案中添加评论,所以我创建了一个新问题。
更新:临时解决方案:
我使用路由器的手动解析,例如:
<v-tabs v-model="active">
<v-tab v-for="tab of tabs" :key="tab.id" :to="tab.route">
{{ tab.name }}
</v-tab>
<v-tab-item v-for="tab of tabs" :key="tab.id" :value="tab.route">
<router-view></router-view>
</v-tab-item>
</v-tabs>
data: {
active: '',
},
computed: {
tabs() {
return [{
id: 1,
name: "Task",
route: this.routeResolve('task')
},
{
id: 2,
name: "Project",
route: this.routeResolve('project')
}
]
}
},
methods: {
routeResolve(name) {
return this.$router.resolve({
name: name,
}).location.path
},
},
答案 0 :(得分:0)
我注意到上述解决方案存在一个问题。下一个代码是循环:
<v-tab-item v-for="tab of tabs" :key="tab.id" :value="tab.route">
<router-view></router-view>
</v-tab-item>
这是指每个路由器将重复N次(其中N是制表符计数)。当我尝试修复它时,我发现我们只能使用下一个代码作为解决方案:
<v-tabs v-model="active">
<v-tab v-for="tab of tabs" :key="tab.id" :to="{ name: tab.route_name }">
{{ tab.name }}
</v-tab>
</v-tabs>
<router-view></router-view>
...