Component({ /** * 组件的属性列表 */ properties: { previewImgList: { type: Array, value: [], observer: function(newVal) { this.initializeImgIndex(); } }, previewImg: { type: String, value: '', observer: function(newVal) { this.initializeImgIndex(); } }, previewHideStatus: { type: Boolean, value: false } }, /** * 组件的初始数据 */ data: { index: 0, imgindex: 1, left: '0%', scaleObj: { scale: 1, x: 0, y: 0, yes: true }, touchS: [], touchE: [], preview_box_top: '0%' // 初始化预览框位置 }, lifetimes: { detached: function () { // 在组件实例被从页面节点树移除时执行 }, attached: async function () { // 在组件实例进入页面节点树时执行 this.initializeImgIndex(); }, }, /** * 组件的方法列表 */ methods: { initializeImgIndex: function () { const { previewImgList, previewImg } = this.properties; console.log(this.properties); if (previewImgList.length > 0 && previewImg) { const index = previewImgList.findIndex(img => img === previewImg); if (index !== -1) { this.setData({ index: index, imgindex: index + 1, // imgindex 从 1 开始 left: '-' + index + '00%;transition: all 0s;' }); } else { // 如果没有找到,可以选择处理的逻辑,比如重置 index this.setData({ index: 0, imgindex: 1, left: '0%;transition: all .5s;' }); } } }, touchStart: function (e) { this.data.touchStartTime = e.timeStamp; // 时间点 let sx = e.touches[0].pageX; let sy = e.touches[0].pageY; this.data.touchS = [sx, sy]; }, touchMove: function (e) { let start = this.data.touchS; let sx = e.touches[0].pageX; let sy = e.touches[0].pageY; this.data.touchE = [sx, sy]; }, touchEnd: function (e) { let start = this.data.touchS; let end = this.data.touchE; let scaleObj = this.data.scaleObj; if (scaleObj.yes) { if (end[0] === 0) { console.log('点击'); this.jingzhi() } else if ((start[0] < end[0] - 50) && (scaleObj.scale === 1 && scaleObj.x === 0 && scaleObj.y === 0)) { if (this.data.index > 0) { this.data.index -= 1; this.data.imgindex -= 1; this.updateView(); } } else if ((start[0] > end[0] + 50) && (scaleObj.scale === 1 && scaleObj.x === 0 && scaleObj.y === 0)) { if (this.data.index < this.data.previewImgList.length - 1) { this.data.index += 1; this.data.imgindex += 1; this.updateView(); } } else { console.log('下滑/上滑'); // this.jingzhi() } this.data.touchE = [0, 0]; } setTimeout(() => { if (this.data.scaleObj.x === 0 && this.data.scaleObj.y === 0 && this.data.scaleObj.scale === 1) { this.data.scaleObj.yes = true; } }, 500); }, updateView: function () { this.setData({ index: this.data.index, left: '-' + this.data.index + '00%;transition: all .5s;', imgindex: this.data.imgindex }); }, jingzhi: function () { // 处理点击事件 console.log('点击图片'); this.setData({ preview_box_top: '0%', previewHideStatus: false ,// 点击后重新显示预览框 previewImgList:[], previewImg:'' }); } } });