From d8b41fff43a2cee6a8f714ffa807623b15803786 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Fri, 20 Oct 2023 15:21:35 +0800
Subject: [PATCH] fix:立行立改Uniapp小程序新建项目
---
uni_modules/uview-ui/components/u-list-item/u-list-item.vue | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 116 insertions(+), 0 deletions(-)
diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue
new file mode 100644
index 0000000..1a25db6
--- /dev/null
+++ b/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 ���������������������item
+ * @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.8.0