|
@@ -7,7 +7,9 @@ type ItemType = (string | number | Object)
|
|
export struct RefreshView {
|
|
export struct RefreshView {
|
|
@Link isLoading: boolean
|
|
@Link isLoading: boolean
|
|
@Prop data: Array<object>
|
|
@Prop data: Array<object>
|
|
- onLoadMore?: () => void
|
|
|
|
|
|
+ @Require keyGenerator?: (item: ESObject, index: number) => string
|
|
|
|
+ pageSize: number = 10
|
|
|
|
+ onLoadMore?: (pageNum: number) => void
|
|
onRefresh?: () => void
|
|
onRefresh?: () => void
|
|
private startY: number = 0
|
|
private startY: number = 0
|
|
private endY: number = 0
|
|
private endY: number = 0
|
|
@@ -15,7 +17,7 @@ export struct RefreshView {
|
|
private _openMore: boolean = false
|
|
private _openMore: boolean = false
|
|
|
|
|
|
aboutToAppear(): void {
|
|
aboutToAppear(): void {
|
|
- // this.onRefresh && this.onRefresh()
|
|
|
|
|
|
+ this.onRefresh && this.onRefresh()
|
|
}
|
|
}
|
|
|
|
|
|
// 使用父组件@Builder装饰的方法初始化子组件@BuilderParam
|
|
// 使用父组件@Builder装饰的方法初始化子组件@BuilderParam
|
|
@@ -30,7 +32,7 @@ export struct RefreshView {
|
|
ListItem() {
|
|
ListItem() {
|
|
this.customBuilderParam(item, index)
|
|
this.customBuilderParam(item, index)
|
|
}
|
|
}
|
|
- }, (index: number) => index.toString())
|
|
|
|
|
|
+ }, (item: ESObject, index: number) => this.keyGenerator!(item, index))
|
|
}
|
|
}
|
|
.onTouch((event: TouchEvent) => {
|
|
.onTouch((event: TouchEvent) => {
|
|
const e1 = event.touches[0]
|
|
const e1 = event.touches[0]
|
|
@@ -48,13 +50,18 @@ export struct RefreshView {
|
|
case TouchType.Up:
|
|
case TouchType.Up:
|
|
this.endY = e1.y
|
|
this.endY = e1.y
|
|
if (this.endY - this.startY < -100 && this._openMore) {
|
|
if (this.endY - this.startY < -100 && this._openMore) {
|
|
- this.onLoadMore && this.onLoadMore()
|
|
|
|
|
|
+ const v = this.data && (this.data.length % this.pageSize) === 0
|
|
|
|
+ if (v) {
|
|
|
|
+ this.onLoadMore && this.onLoadMore(Math.floor(this.data.length / this.pageSize))
|
|
|
|
+ } else {
|
|
|
|
+ ToolsHelper.showMessage('没有更多数据了')
|
|
|
|
+ }
|
|
}
|
|
}
|
|
break
|
|
break
|
|
}
|
|
}
|
|
})
|
|
})
|
|
.onScrollIndex((first: number, last: number) => {
|
|
.onScrollIndex((first: number, last: number) => {
|
|
- this.lastNum = last
|
|
|
|
|
|
+ this.lastNum = last + 1
|
|
})
|
|
})
|
|
.width('100%')
|
|
.width('100%')
|
|
.height('100%')
|
|
.height('100%')
|
|
@@ -65,7 +72,7 @@ export struct RefreshView {
|
|
.width('100%')
|
|
.width('100%')
|
|
.height('100%')
|
|
.height('100%')
|
|
.textAlign(TextAlign.Center)
|
|
.textAlign(TextAlign.Center)
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.width('100%')
|
|
.width('100%')
|