<template>
<view :class="canPreview ? 'customImg' : 'customImg isloading'">
<image :src="image" :mode="mode" fade-show lazy-load :class="iclass" @error="onImageError" @load="onImageLoad"
@tap="tap?tap():preview(image)"
>
</image>
</view>
</template>
<script>
export default {
props: {
// 事件
tap:{
type: Function,
default:null
},
//图片前缀
preFix: {
type: String,
default: process.uniEnv.imgPreFix
},
src: {
type: String,
default: ''
},
//样式class
iclass: {
type: String,
default: ''
},
mode: {
type: String,
default: 'aspectFill'
}
},
data() {
return {
image: '',
canPreview: false,
noImage: require("@/static/images/noImage.jpg")
}
},
watch: {
src: {
handler(val) {
if (val) {
// this.preFix+val
this.image = val
} else {
console.log('空地址');
this.image = this.noImage
}
},
immediate: true
}
},
methods: {
onImageLoad() {
this.canPreview = true
},
onImageError() {
console.log('无效路径图片');
this.image = this.noImage
},
preview(e) {
if (this.canPreview) {
let array = [];
array.push(e);
uni.previewImage({
urls: array,
current: array[0]
});
}
}
}
}
</script>
<style lang="scss" scoped>
.customImg {
display: inline-block;
}
.isloading {
background: url("@/static/images/loading2.gif") no-repeat center;
background-size: 100%;
}
</style>
<template>
<view style="width:10px;height:50px">
<customImg :src="require('@/static/images/success.png')" iclass="image-small" :tap="cc"></customImg>
<text>11</text>
</view>
</template>
<script>
import customImg from './test.vue'
export default {
components: { customImg },
data() {
return {}
},
methods: {
cc(){
console.log(455454);
}
}
}
</script>
<style lang="scss" scoped>
</style>