一、问题描述:
1、在index.vue页面里面,通过this.$set()方法更新了table的数据条数;
2、这个数据条数是通过参数过滤的,不是通过顶部的搜索框;
3、列表数据虽然更新了,但翻页没有更新,也就是total还是显示的原来api过来的数据长度,不是新更新的数据长度。
比如:原来API数据长度total=30,页面过滤后数据为20,但底部翻页组件显示的还是30条数据。
请求:这个是什么原因?怎么解决这个问题?
二、代码:
async pageRequest(query) {
// 1、获取远程数据
const ret = await GetList(query)
this.DataList = ret.data.data
this.$nextTick().then(async () => {
await this.$nextTick()
// 2、获取A页面传递的linkYear参数
this.SDate = this.$route.params.linKYear + '-01-01'
this.EDate = this.$route.params.linKYear + '-12-31'
// 3、根据参数过滤列表数据
if (this.$route.params.linKYear != null) {
this.newtableData.length = 0
this.DataList.forEach(item => {
if (item.sign_date >= this.SDate && item.sign_date <= this.EDate) {
if (this.$route.params.DataType == 'XQ') {
this.newtableData.push(item)
}
else if (this.$route.params.DataType == 'QF') {
if (item.contract_type == 2) {
this.newtableData.push(item)
}
}
}
});
// 4、将过滤的数据更新到tableData
// ret.data.total == this.newtableData.length
this.$set(this.getD2Crud(), 'd2CrudData', this.newtableData)
} else {
console.log('4-没获取到LinkYear', this.$route.params.linKYear);
}
})
return ret
},