custom-refresher.uvue 2.0 KB
Newer Older
1
<template>
2 3 4 5 6 7 8
  <scroll-view class="scroll-view"
      :refresher-enabled="true" :refresher-triggered="refresherTriggered" refresher-default-style="none"
      @refresherpulling="onRefresherpulling"
      @refresherrefresh="onRefresherrefresh"
      :refresher-threshold="refresherThreshold"
  >
    <view class="content">
9 10
      <view v-for="i in 20" class="content-item">
        <text class="text">item-{{i}}</text>
11
      </view>
12 13 14
    </view>
    <refresh-box slot="refresher" :state="state" :pullingDistance="pullingDistance"></refresh-box>
  </scroll-view>
15 16 17 18 19 20 21 22 23 24
</template>

<script>
  import refreshBox from './refresh-box/refresh-box.uvue';
  export default {
    components:{refreshBox},
    data() {
      return {
        refresherTriggered:false,
        refresherThreshold:40,
25 26
        pullingDistance:0,
		resetting: false
27 28 29 30
      }
    },
    computed:{
      state():number{
31 32 33
		if (this.resetting) {
		  return 3;
		}
34 35 36 37 38 39 40 41 42 43 44 45 46 47
        if(this.refresherTriggered){
          return 2
        }
        if(this.pullingDistance > this.refresherThreshold){
          return 1
        }else{
          return 0
        }
      }
    },
    methods: {
      onRefresherpulling(e:RefresherEvent){
        // console.log('onRefresherpulling',e.detail.dy)
        this.pullingDistance = e.detail.dy
48 49 50
		if (this.pullingDistance.toDouble() == 0.0) {
			this.resetting = false;
		}
51 52 53 54 55
      },
      onRefresherrefresh(){
        this.refresherTriggered = true
        setTimeout(()=>{
          this.refresherTriggered = false
DCloud_JSON's avatar
DCloud_JSON 已提交
56
        },1500)
57 58 59 60 61 62 63 64 65 66 67 68 69 70
      },
      // onRefresherrestore(e:RefresherEvent){
      //   console.log('onRefresherrestore',e)
      // },
      // onRefresherabort(e:RefresherEvent){
      //   console.log('onRefresherabort',e)
      // },
    }
  }
</script>

<style>
  .scroll-view {
    flex: 1;
71 72
		background-color: #f5f5f5;
  }
xuty73419315's avatar
xuty73419315 已提交
73

74 75 76 77
  .content {
		padding: 5px 15px;
  }

78 79 80 81 82 83
	.content-item {
		padding: 15px;
		margin: 5px 0;
		background-color: #fff;
		border-radius: 5px;
	}
xuty73419315's avatar
xuty73419315 已提交
84

85 86 87 88 89 90
	.text {
		font-size: 14px;
		color: #666;
		line-height: 20px;
	}

xuty73419315's avatar
xuty73419315 已提交
91
</style>