月半猫 發表於 2020-3-30 16:40:00

uni-app 下拉刷新 上拉加载

<p>首先在page页面设置enablePullDownRefresh属性&nbsp; 激活下拉</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
            </span>"path": "pages/index/index"<span style="color: rgba(0, 0, 0, 1)">,
            </span>"style"<span style="color: rgba(0, 0, 0, 1)">: {
                </span>"navigationBarTitleText": "uni-app"<span style="color: rgba(0, 0, 0, 1)">,
                </span>"enablePullDownRefresh":<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
            }
      }</span></pre>
</div>
<p>&nbsp;</p>
<p>index.vue</p>
<div class="cnblogs_code">
<pre>&lt;template&gt;
    &lt;view&gt;
      &lt;view v-<span style="color: rgba(0, 0, 255, 1)">for</span>="(item,index) of newList" :key="index" class="newList"&gt;<span style="color: rgba(0, 0, 0, 1)">
            {{item}}
      </span>&lt;/view&gt;
      &lt;view class="loading"&gt;{{loadingTxt}}&lt;/view&gt;
    &lt;/view&gt;
&lt;/template&gt;

&lt;script&gt;<span style="color: rgba(0, 0, 0, 1)">
let page</span>=1,timer=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">
    export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
      data() {
            </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
                newList:[],
                loadingTxt:</span>'加载更多'<span style="color: rgba(0, 0, 0, 1)">
            }
      },
      onLoad(e) {
            </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getNews()
      },
      onPullDownRefresh() {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">下拉的生命周期</span>
            <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getNews()
      },
      onReachBottom() {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">阻止重复加载</span>
            <span style="color: rgba(0, 0, 255, 1)">if</span>(timer !== <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
                clearTimeout(timer)
            }
            timer</span>=setTimeout(()=&gt;<span style="color: rgba(0, 0, 255, 1)">this</span>.getMoreNews(),500<span style="color: rgba(0, 0, 0, 1)">)
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> this.getMoreNews()</span>
<span style="color: rgba(0, 0, 0, 1)">      },
      methods: {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">下拉刷新事件</span>
<span style="color: rgba(0, 0, 0, 1)">            getNews(){
                page</span>=1
                <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">标题读取样式激活</span>
<span style="color: rgba(0, 0, 0, 1)">                uni.showNavigationBarLoading()
                uni.request({
                  url:</span>'https://demo.hcoder.net/index.php?user=hcoder&amp;pwd=hcoder&amp;m=List1&amp;page=1'<span style="color: rgba(0, 0, 0, 1)">,
                  success: (res) </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                        </span><span style="color: rgba(0, 0, 255, 1)">this</span>.newList=res.data.split('--hcSplitor--'<span style="color: rgba(0, 0, 0, 1)">)
                        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">停止下拉样式</span>
<span style="color: rgba(0, 0, 0, 1)">                        uni.stopPullDownRefresh()
                        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">隐藏标题读取</span>
<span style="color: rgba(0, 0, 0, 1)">                        uni.hideNavigationBarLoading()
                        page</span>++<span style="color: rgba(0, 0, 0, 1)">
                  }
                })
            },
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">加载更多的新闻</span>
<span style="color: rgba(0, 0, 0, 1)">            getMoreNews(){
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.loadingTxt='加载中'<span style="color: rgba(0, 0, 0, 1)">
                uni.showNavigationBarLoading()
                uni.request({
                  url:</span>'https://demo.hcoder.net/index.php?user=hcoder&amp;pwd=hcoder&amp;m=List1&amp;page='+<span style="color: rgba(0, 0, 0, 1)">page,
                  success: (res) </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                        </span><span style="color: rgba(0, 0, 255, 1)">if</span>(res.data===<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
                            </span><span style="color: rgba(0, 0, 255, 1)">this</span>.loadingTxt="已经加载全部"
                            <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">
                        }
                        </span><span style="color: rgba(0, 0, 255, 1)">this</span>.newList=<span style="color: rgba(0, 0, 255, 1)">this</span>.newList.concat(res.data.split('--hcSplitor--'<span style="color: rgba(0, 0, 0, 1)">))
                        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> this.newList=[...this.newList,res.data.split('--hcSplitor--')]</span>
                        <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">停止下拉样式</span>
<span style="color: rgba(0, 0, 0, 1)">                        uni.stopPullDownRefresh()
                        </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">隐藏标题读取</span>
<span style="color: rgba(0, 0, 0, 1)">                        uni.hideNavigationBarLoading()
                        page</span>++<span style="color: rgba(0, 0, 0, 1)">
                  }
                })
            },
      }
    }
</span>&lt;/script&gt;

&lt;style&gt;<span style="color: rgba(0, 0, 0, 1)">
    .newList{
      line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 2em;
      padding: 20px;
    }
    .loading{
      line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 2em;
      text</span>-<span style="color: rgba(0, 0, 0, 1)">align: center;
      color: #</span>888<span style="color: rgba(0, 0, 0, 1)">;
      margin</span>-<span style="color: rgba(0, 0, 0, 1)">top: 30rpx;
    }
</span>&lt;/style&gt;</pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/lxz-blogs/p/12599475.html
頁: [1]
查看完整版本: uni-app 下拉刷新 上拉加载