// component.js import { ComponentWithComputed } from 'miniprogram-computed' ComponentWithComputed({ options: { styleIsolation: 'apply-shared' }, properties: { paging: Object, g_cdn: String }, data: { }, watch:{ 'paging.current':function (val) { this.triggerEvent('changeCurrent', val) } }, computed: { min() { return 1 }, max(data) { return Math.ceil(data.paging.total / data.paging.pageSize) }, routineMin(data) { return data.paging.current - Math.ceil(data.paging.showSize / 2) }, routineMax(data) { return data.paging.current + Math.floor(data.paging.showSize / 2) }, currMin(data: any) { let c = data.max - data.routineMax if (data.routineMin <= data.min) { return data.min } else if (c >= 0) { return data.routineMin } else if (data.routineMin + c <= data.min) { return data.min } else { return data.routineMin + c } }, currMax(data: any) { let c = data.min - data.routineMin if (data.routineMax >= data.max) { return data.max } else if (c <= 0) { return data.routineMax } else if (data.routineMax + c >= data.max) { return data.max } else { return data.routineMax + c } }, numbers(data: any) { let total = data.currMax - data.currMin let numbers = [] if (total <= 0) { numbers.push(1) } else { for (let i = 0; i <= total; i++) { numbers.push(data.currMin + i) } } return numbers } }, methods: { onTap(e: any) { let { idx } = e.currentTarget.dataset; this.setData({ 'paging.current': idx }) }, prev() { if (this.properties.paging.current - 1 < this.data.min) { return } this.setData({ 'paging.current': this.properties.paging.current - 1 }) }, next() { if (this.properties.paging.current + 1 > this.data.max) { return } this.setData({ 'paging.current': this.properties.paging.current + 1 }) }, } })