【发布时间】:2018-01-07 23:44:29
【问题描述】:
我在/entries/12 路线上。在同一个组件上,当用户单击下一个按钮时,我想推送/entries/13。
代码是这样的:
//e is the next page number.
this.$router.push({ name: 'Entries', params: { pageNum: e }});
我得到以下错误:
如果我尝试其他可行的路线。
完整代码:
<template>
<div class="entries">
<generic-entries @clicked="clicked" ></generic-entries>
</div>
</template>
<script>
import GenericEntriesComp from '@/components/GenericEntriesComp';
export default{
name: 'entries-comp',
components: {genericEntries: GenericEntriesComp},
mounted(){
var params = {id : this.$route.params.pageNum}
this.$store.dispatch("getEntries",params);
},
methods: {
clicked(e){
this.$router.push({ name: 'Entries', params: { pageNum: e.toString() }});
},
loadData(){
var params = {pageNum : this.$route.params.pageNum}
this.$store.dispatch("getEntries", params)
}
},
computed: {
items(){
return this.$store.state.entries
},
},
watch: {
'$route': 'loadData'
}
}
</script>
顺便说一句,错误来自:
Vue.config.errorHandler = function (err, vm, info) {
console.error(err);
}
【问题讨论】:
-
您确定负责该路线的代码正确且有效吗?当您手动转到
entry/13时会发生什么? -
如果你的 routes 对象包含以下路由应该可以工作:{ path: '/entry/:pageNum', name: 'Entries' } 。这就是你使用的结构吗?
-
@BelminBedak 如果我尝试不同的命名路线,它会起作用。所以,我相信是的。
-
@Joos,我更新了我的问题,是的,我的定义是正确的。
-
会不会是因为e是数字而不是String,路由器不知道怎么处理?只是在这一点上猜测:P
标签: vue.js vue-router