From 68c5ef7d9fea3f911e250fb5f8b300bc76099e49 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 26 十月 2023 13:55:49 +0800
Subject: [PATCH] 小程序
---
minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 116 insertions(+), 0 deletions(-)
diff --git a/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
new file mode 100644
index 0000000..d8a2b69
--- /dev/null
+++ b/minipro_standard/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
@@ -0,0 +1,116 @@
+<template>
+ <!-- #ifdef APP-NVUE -->
+ <cell>
+ <!-- #endif -->
+ <view
+ class="u-list-item"
+ :ref="`u-list-item-${anchor}`"
+ :anchor="`u-list-item-${anchor}`"
+ :class="[`u-list-item-${anchor}`]"
+ >
+ <slot />
+ </view>
+ <!-- #ifdef APP-NVUE -->
+ </cell>
+ <!-- #endif -->
+</template>
+
+<script>
+ import props from './props.js';
+ // #ifdef APP-NVUE
+ const dom = uni.requireNativePlugin('dom')
+ // #endif
+ /**
+ * List 鍒楄〃
+ * @description 璇ョ粍浠朵负楂樻�ц兘鍒楄〃缁勪欢
+ * @tutorial https://www.uviewui.com/components/list.html
+ * @property {String | Number} anchor 鐢ㄤ簬婊氬姩鍒版寚瀹歩tem
+ * @example <u-list-ite v-for="(item, index) in indexList" :key="index" ></u-list-item>
+ */
+ export default {
+ name: 'u-list-item',
+ mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
+ data() {
+ return {
+ // 鑺傜偣淇℃伅
+ rect: {},
+ index: 0,
+ show: true,
+ sys: uni.$u.sys()
+ }
+ },
+ computed: {
+
+ },
+ inject: ['uList'],
+ watch: {
+ // #ifndef APP-NVUE
+ 'uList.innerScrollTop'(n) {
+ const preLoadScreen = this.uList.preLoadScreen
+ const windowHeight = this.sys.windowHeight
+ if(n <= windowHeight * preLoadScreen) {
+ // this.parent.updateOffsetFromChild(0)
+ } else if (this.rect.top <= n - windowHeight * preLoadScreen) {
+ // this.parent.updateOffsetFromChild(this.rect.top)
+ }
+ }
+ // #endif
+ },
+ created() {
+ this.parent = {}
+ },
+ mounted() {
+ this.init()
+ },
+ methods: {
+ init() {
+ // 鍒濆鍖栨暟鎹�
+ this.updateParentData()
+ this.index = this.parent.children.indexOf(this)
+ this.resize()
+ },
+ updateParentData() {
+ // 姝ゆ柟娉曞湪mixin涓�
+ this.getParentData('u-list')
+ },
+ resize() {
+ this.queryRect(`u-list-item-${this.anchor}`).then(size => {
+ const lastChild = this.parent.children[this.index - 1]
+ this.rect = size
+ const preLoadScreen = this.uList.preLoadScreen
+ const windowHeight = this.sys.windowHeight
+ // #ifndef APP-NVUE
+ if (lastChild) {
+ this.rect.top = lastChild.rect.top + lastChild.rect.height
+ }
+ if (size.top >= this.uList.innerScrollTop + (1 + preLoadScreen) * windowHeight) this.show =
+ false
+ // #endif
+ })
+ },
+ // 鏌ヨ鍏冪礌灏哄
+ queryRect(el) {
+ return new Promise(resolve => {
+ // #ifndef APP-NVUE
+ this.$uGetRect(`.${el}`).then(size => {
+ resolve(size)
+ })
+ // #endif
+
+ // #ifdef APP-NVUE
+ const ref = this.$refs[el]
+ dom.getComponentRect(ref, res => {
+ resolve(res.size)
+ })
+ // #endif
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ @import "../../libs/css/components.scss";
+
+ .u-list-item {}
+</style>
--
Gitblit v1.9.3