el-pagination设置current-page无法更新视
2019-10-24 本文已影响0人
钱英俊真英俊
page确实是5,但显示却不是
current-page
是Element-ui
的pagination
组件的当前页数设置。需求是返回这个页面的时候需要回到之前的页码数。然而当设置current-page
获取表格之后却无法正确渲染。
代码
<template>
<div>
<el-pagination :total="total"
:size='20' :current-page="filter.page"></el-pagination>
<div>{{filter}}</div>
</div>
</template>
<script>
export default {
name: 'Test',
data () {
return {
filter: {},
total: 0
}
},
mounted () {
this.filter.page = 5
this.change()
},
methods: {
change () {
// 模拟数据返回
setTimeout(() => {
this.total = 100
}, 1000)
}
}
}
</script>
原因
-
pagination
组件会根据total
重新计算page
是在总页码之内,默认是1
初始渲染
这个时候传值是5,但total还没改变,所以传值无效。 - 那在获取到total之后再次赋值可以吗?
change () {
// 模拟数据返回
setTimeout(() => {
this.total = 100
this.filter.page = 5 // 再次赋值
}, 3000)
}
很可惜,还是不行
因为mounted
的时候已经赋过值了,重新赋值,vue
也判定为没有改变,所以不会重置。这里哪怕改变对象的指向,只要属性和属性值没变,依然不会造成视图更新。
解决方法:
mounted
的时候另取变量存储page
的值进行表格数据获取,在获取到total
之后进行page
更新