89 lines
2.0 KiB
JavaScript
89 lines
2.0 KiB
JavaScript
|
|
const systemInfo = wx.getSystemInfoSync();
|
|||
|
|
Component({
|
|||
|
|
externalClasses: ['t-class', 't-class-load'],
|
|||
|
|
properties: {
|
|||
|
|
loadFailed: {
|
|||
|
|
type: String,
|
|||
|
|
value: 'default',
|
|||
|
|
},
|
|||
|
|
loading: {
|
|||
|
|
type: String,
|
|||
|
|
value: 'default',
|
|||
|
|
},
|
|||
|
|
src: {
|
|||
|
|
type: String,
|
|||
|
|
value: '',
|
|||
|
|
},
|
|||
|
|
mode: {
|
|||
|
|
type: String,
|
|||
|
|
value: 'aspectFill',
|
|||
|
|
},
|
|||
|
|
webp: {
|
|||
|
|
type: Boolean,
|
|||
|
|
value: true,
|
|||
|
|
},
|
|||
|
|
lazyLoad: {
|
|||
|
|
type: Boolean,
|
|||
|
|
value: false,
|
|||
|
|
},
|
|||
|
|
showMenuByLongpress: {
|
|||
|
|
type: Boolean,
|
|||
|
|
value: false,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
data: {
|
|||
|
|
thumbHeight: 375,
|
|||
|
|
thumbWidth: 375,
|
|||
|
|
systemInfo,
|
|||
|
|
},
|
|||
|
|
lifetimes: {
|
|||
|
|
ready() {
|
|||
|
|
const { mode } = this.properties;
|
|||
|
|
// 获取容器的真实宽高,设置图片的裁剪宽度
|
|||
|
|
this.getRect('.J-image').then((res) => {
|
|||
|
|
if (res) {
|
|||
|
|
const { width, height } = res;
|
|||
|
|
this.setData(
|
|||
|
|
mode === 'heightFix'
|
|||
|
|
? {
|
|||
|
|
thumbHeight: this.px2rpx(height) || 375,
|
|||
|
|
}
|
|||
|
|
: {
|
|||
|
|
thumbWidth: this.px2rpx(width) || 375,
|
|||
|
|
},
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
px2rpx(px) {
|
|||
|
|
return (750 / (systemInfo.screenWidth || 375)) * px;
|
|||
|
|
},
|
|||
|
|
getRect(selector) {
|
|||
|
|
return new Promise((resolve) => {
|
|||
|
|
if (!this.selectorQuery) {
|
|||
|
|
this.selectorQuery = this.createSelectorQuery();
|
|||
|
|
}
|
|||
|
|
this.selectorQuery.select(selector).boundingClientRect(resolve).exec();
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
onLoad(e) {
|
|||
|
|
this.triggerEvent('load', e.detail);
|
|||
|
|
},
|
|||
|
|
onError(e) {
|
|||
|
|
this.triggerEvent('error', e.detail);
|
|||
|
|
},
|
|||
|
|
// 添加错误处理方法,防止组件报错
|
|||
|
|
handleError(e) {
|
|||
|
|
console.warn('[webp-image] 图片加载失败:', e.detail);
|
|||
|
|
this.triggerEvent('error', e.detail);
|
|||
|
|
},
|
|||
|
|
// 添加onError方法的别名,确保兼容性
|
|||
|
|
error(e) {
|
|||
|
|
console.warn('[webp-image] 图片错误事件:', e);
|
|||
|
|
this.onError(e);
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
});
|