electricity_bill_calc_wx/components/pagination/index.js

159 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Component({
/**
* 组件的属性列表
*/
properties: {
currentIndex: { //当前页码
type: Number,
value: 1,
observer(newVal,oldVal) {// 数据监听
const that = this;
this.setData({
index: newVal
}, () => {
that.updateBtnDis();
})
},
},
totalPage: {
type: Number,
observer(newVal,oldVal) {// 数据监听
const that = this;
this.setData({
total: newVal
}, () => {
that.updateBtnDis();
})
},
}
},
/**
* 组件的初始数据
*/
data: {
index: 1,
total: 10,
pageMask: false,
prevBtnDis: true,
nextBtnDis: false
},
/**
* 组件的方法列表
*/
lifetimes: {
// 在组件实例进入页面节点树时执行
attached: function () {
this.setData({
index: this.properties.currentIndex,
total: this.properties.totalPage
})
}
},
methods: {
// 设置异步请求之后的页面、总记录数
setPage(index, total){
this.setData({
index,
total
})
},
//每次改变页码就调用该函数
triggerParent: function () {
// 通知父组件当前加载的页数
// 自定义组件向父组件传值
const option = {
currentIndex: this.data.index
};
// pagingChange 自定义名称事件,父组件中使用
this.triggerEvent('pagingChange', option)
},
//开启页码弹窗
showPagePopUp: function () {
this.setData({
pageMask: true
})
},
//关闭页码弹窗
hidePagePopUp: function () {
this.setData({
pageMask: false
})
},
//更改页码点击事件
onChangePage: function (e) {
//console.log("更改页码事件:",e);
this.setData({
pageMask: false,
index: e.currentTarget.dataset.index //点击的页数
})
// 先判断当前页数是否需要更新disabled的状态
this.updateBtnDis();
this.triggerParent();
},
//上一页点击事件
prevPage: function () {
if(this.data.index <= 1) return;
let num = this.data.index - 1;
this.setData({
index: num
})
this.triggerParent();
// 更新按钮状态
this.updateBtnDis();
},
//下一页点击事件
nextPage: function () {
if(this.data.index >= this.data.total) return;
let num = this.data.index + 1;
this.setData({
index: num
})
this.triggerParent();
// 更新按钮状态
this.updateBtnDis();
},
//判断按钮是否为disabled
updateBtnDis: function () {
let index = this.data.index;
let total = this.data.total;
if(index == total && index == 1){ // 都为起始页和总页数都为1
this.setData({
nextBtnDis: true,
prevBtnDis: true
})
}else if (index == total) { // 最后一页
this.setData({
nextBtnDis: true,
prevBtnDis: false,
})
} else if (index == 1){ // 第一页
this.setData({
prevBtnDis: true,
nextBtnDis: false,
})
}else{
this.setData({
prevBtnDis: false,
nextBtnDis: false
})
}
}
}
})