tui-virtual-item.vue
1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<template>
<view class="tui-virtual-item" :style="getStyle" @tap="onTap">
<slot></slot>
</view>
</template>
<script>
export default {
name: "tui-virtual-item",
emits: ['click'],
inject: {
virtuallist: {
value: "virtuallist",
default: null
}
},
// #ifdef MP-WEIXIN
options: {
virtualHost: true
},
// #endif
computed: {
getStyle() {
return this.itemHeight ? `height:${this.itemHeight}px;` : ''
}
},
data() {
return {
index: 0,
itemHeight: 0
};
},
created() {
if (this.virtuallist) {
this.virtuallist.children.push(this)
this.itemHeight = this.virtuallist.cellHeight || this.virtuallist.getCellHeight()
}
},
methods: {
updated(index, height) {
this.index = index
this.itemHeight = height
},
onTap() {
this.$emit('click', {})
}
}
}
</script>
<style scoped>
.tui-virtual-item {
/* #ifndef APP-NVUE */
width: 100%;
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
}
</style>