微信小程序列表的上拉加载和下拉刷新的实现-程序员宅基地

技术标签: 微信小程序  

微信小程序可谓是9月21号之后最火的一个名词了,一经出现真是轰炸了整个开发人员,当然很多App开发人员有了一个担心,微信小程序的到来会不会让移动端App颠覆,让移动端的程序员失业,身为一个Android开发者我是不相信的,即使有,那也是需要个一两年的过度和打磨才能实现的吧。

不管微信小程序是否能颠覆当今的移动开发格局,我们都要积极向上的心态去接收,去学习。不排斥新技术,所以,心动不如行动,赶紧先搭建一个微信小程序开发工具。那么接下来就让我们来开始学习列表的上拉加载和下拉刷新的实现吧(通过聚合数据平台获取微信新闻)。

1.介绍几个组件

1.1 scroll-view 组件

这里写图片描述

注意:使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height。

1.2 image组件

这里写图片描述

注意:mode有12种模式,其中3种是缩放模式,9种是裁剪模式。

1.3 Icon组件

这里写图片描述

iconType: [ 
‘success’, ‘info’, ‘warn’, ‘waiting’, ‘safe_success’, ‘safe_warn’, 
‘success_circle’, ‘success_no_circle’, ‘waiting_circle’, ‘circle’, ‘download’, 
‘info_circle’, ‘cancel’, ‘search’, ‘clear’ 
]

2.列表的上拉加载和下拉刷新的实现

2.1先来张效果图

!这里写图片描述

2.2逻辑很简单,直接上代码

2.2.1 detail.wxml 布局文件

<loading hidden="{
   {
   hidden}}" bindchange="loadingChange">
    加载中...
  </loading>  
 <scroll-view scroll-y="true" style="height: 100%;" bindscrolltolower="loadMore" bindscrolltoupper="refesh">
      <view wx:if="{
   {
   hasRefesh}}" style="display: flex;flex-direction: row;align-items: center;align-self: center;justify-content: center;">
      <icon type="waiting" size="45"/><text>刷新中...</text></view>
      <view wx:else  style="display:none" ><text></text></view>
  <view class="lll"  wx:for="{
   {
   list}}" wx:for-item="item" bindtap="bindViewTap" 
         data-title="{
   {
   item.title}}" >
      <image style=" width: 50px;height: 50px;margin: 20rpx;" src="{
   {
   item.firstImg}}"   ></image>
      <view  class="eee" > 
       <view style="margin:5px;font-size:8px"> 标题:{
   {
   item.title}}</view>
       <view style="margin:5px;color:red;font-size:6px"> 来源:{
   {
   item.source}}</view>
       </view>
</view>
<view class="tips1">
      <view wx:if="{
   {
   hasMore}}" style="display: flex;flex-direction: row;align-items: center;align-self: center;justify-content: center;">
      <icon type="waiting" size="45"/><text>玩命的加载中...</text></view>
      <view wx:else><text>没有更多内容了</text></view>
    </view>
 </scroll-view>

 

2.2.1 detail.js逻辑代码文件


var network_util = require('../../utils/network_util.js');
var json_util = require('../../utils/json_util.js');
Page({
  data:{
    // text:"这是一个页面"
    list:[],
     dd:'',
     hidden:false,
     page: 1,
     size: 20,
     hasMore:true,
     hasRefesh:false
  },
  onLoad:function(options){
    var that = this;
    var url = 'http://v.juhe.cn/weixin/query?key=f16af393a63364b729fd81ed9fdd4b7d&pno=1&ps=10';
    network_util._get(url,
    function(res){
    that.setData({
       list:res.data.result.list,
       hidden: true,
    });
    },function(res){
     console.log(res);
 });
  },
  onReady:function(){
    // 页面渲染完成
  },
  onShow:function(){
    // 页面显示
  },
  onHide:function(){
    // 页面隐藏
  },
  onUnload:function(){
    // 页面关闭
  },
   //点击事件处理
  bindViewTap: function(e) {
    console.log(e.currentTarget.dataset.title);
  },
  //加载更多
  loadMore: function(e) {
     var that = this;
    that.setData({
    hasRefesh:true,});
    if (!this.data.hasMore) return
    var url = 'http://v.juhe.cn/weixin/query?key=f16af393a63364b729fd81ed9fdd4b7d&pno='+(++that.data.page)+'&ps=10';
    network_util._get(url,
    function(res){
    that.setData({
       list: that.data.list.concat(res.data.result.list),
       hidden: true,
       hasRefesh:false,
    });
    },function(res){
     console.log(res);
  })
},
//刷新处理
refesh: function(e) {
 var that = this;
 that.setData({
    hasRefesh:true,
 });
    var url = 'http://v.juhe.cn/weixin/query?key=f16af393a63364b729fd81ed9fdd4b7d&pno=1&ps=10';
    network_util._get(url,
    function(res){
    that.setData({
      list:res.data.result.list,
       hidden: true,
       page:1,
       hasRefesh:false,
    });
    },function(res){
     console.log(res);
 })
},
})

最后的效果: 
这里写图片描述

关于新闻的详情实现,后面在实现,由于还不知道怎么加载h5页面。谢谢你学习,有问题直接QQ(1561281670)交流。

代码地址:https://github.com/lidong1665/WeiXinProject

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/llixiangjian/article/details/75579639

智能推荐

tampermonkey油猴+chrome,在浏览器中运行自己写的js脚本_油猴能篡改js-程序员宅基地

文章浏览阅读2.6w次,点赞3次,收藏12次。前言最近再看犀牛书《JavaScript权威指南》,当中的小例子我发现自己没法调试它zzz,于是就想到把它嵌入到浏览器里面,主要是使用的油猴再加上自己的js脚本环境tampermonkey v4.6 油猴 ubuntu 18 chrome油猴添加脚本 点击这边的添加脚本,然后在界面的脚本页面中输入自己的脚本代码,就可以了。测试代码// ==UserSc..._油猴能篡改js

我的朋友佩德罗破解版下载|我的朋友佩德罗(My Friend Pedro)免安装绿色中文破解版下载_我的朋友佩德罗下载-程序员宅基地

文章浏览阅读3.9k次。点击下载来源:我的朋友佩德罗(My Friend Pedro)免安装绿色中文破解版我的朋友佩德罗(My Friend Pedro)是由Devolver Digital发行的一款款新颖有趣的第三人称射击游戏,玩家在游戏中获得更加强大的实力,轻松的击杀敌人。游戏开始,你会在香蕉的指引下开始杀手生涯,使用匕首、手枪、机枪等武器,通过跳跃、翻滚、减缓时间等动作,躲避敌人的射击,并将其消灭。整个游戏连贯..._我的朋友佩德罗下载

使用mJS进行物联网嵌入式脚本和开发的新方法-程序员宅基地

文章浏览阅读584次。在上一篇文章中 ,我谈到了IoT(物联网)以及将物理对象(“物”)连接到Internet。 我已经讨论了Mongoose OS (一种用于IoT的开源操作系统)如何使新手和专业开发人员都能轻松地使用JavaScript编程微控制器。 您可能想知道为什么使用JavaScript,以及JavaScript引擎如何装入微控制器的有限内存中。 有许多旨在将脚本编写在微控制器上的项目,其中包括其他J..._mjs javascript

基于Linux平台下分子建模软件的安装-程序员宅基地

文章浏览阅读213次。文档及视频资料下载地址:http://down.51cto.com/data/1149515附:Linux图形工作站下应用演示。_用于分子计算的linux

ASM 翻译系列第八弹:ASM Internal ASM file extent map-程序员宅基地

文章浏览阅读306次。ASM翻译系列导读:ASM 翻译系列第八弹:ASM Internal ASM file extent mapASM 翻译系列第七弹:高级知识 How many partners?ASM 翻译系列第六弹:高级知识如何映射asmlib管理的盘到它对应的设备名ASM 翻译系列第五弹:高级知识ASM元数据概述ASM 翻译系列第四弹:高级知识kfed元数据编辑器ASM 翻译系列第三弹:ASM d..._asm 翻译系列第八弹

文本生成解码策略 Beam Search, top_k, temperature_`temperature` (=0) has to be a strictly positive f-程序员宅基地

文章浏览阅读755次。本文主要从原理、源码实现等几个方面,依次介绍从Greedy Search到Beam Search、从Beamsearch到Top-k固定采样、从Top-k固定采样到Top-p(Nucleus Sampling)动态采样、从动态采样到概率侧重缩放:temperature温度采样、针对重复生成问题的ngrams重复惩罚机制、针对重复生成问题的RepetitionPenalty重复惩罚、看针对多样性生成中huggingface中还有那些实现策略等7个方向的内容。_`temperature` (=0) has to be a strictly positive float, otherwise your next

随便推点

bitmap算法 --位图算法_位图算法的实验思路-程序员宅基地

文章浏览阅读322次。bitmap算法 --位图算法位图不是像素图片,而是内存中连续的二进制位(bit),用于对大量整型数据做去重和查询例题:给定一块10bit的内存空间,想要依次插入整型数4,2,1,3解法:10bit每一位的的值为0,当插入4时,此时下标 4 的位置,bit值置为1,剩下三个数类似。。。应用:例:一个用户对应多个标签解法:思路逆转。一个标签对应多个用户1、建立用户名和用户ID的映射..._位图算法的实验思路

librealsense2及pyrealsense2安装_ubuntu安装librealsense2-程序员宅基地

文章浏览阅读5.8k次,点赞5次,收藏32次。librealsense2及pyrealsense2安装环境:重新安装的Ubuntu16.04,什么都没有 emmmmm1.安装包官方文档:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md(1)sudo apt-key adv --keyserver keys.gnupg..._ubuntu安装librealsense2

java.lang.ArithmeticException: Rounding necessary-程序员宅基地

文章浏览阅读2.3w次,点赞2次,收藏3次。可能原因:对BigDecimal对象设置了精度,但是没有设置取舍方式,会报错java.lang.ArithmeticException: Rounding necessary。@Testpublic void testDecimal() { String str = "3.33333"; BigDecimal decimal = new BigDecimal(str); try {..._java.lang.arithmeticexception: rounding necessary

[论文笔记]端到端视觉定位 DA4AD: End-to-End Deep Attention-based Visual Localization for Autonomous Driving 2020_predicted iddt per position-程序员宅基地

文章浏览阅读1.4k次,点赞3次,收藏11次。百度自动驾驶部门注意力机制在视觉重定位任务中的应用,端到端网络,可用于明显外观变化的场景,cm级精度,优于基于激光雷达的定位方法。本文使用CNN以及注意力机制训练描述子与关键点,与数据库图像做匹配然后解算相机位姿。构建特征金字塔,使用全卷积网络 独立 提取密集特征。构建定位地图: attentive keypoints + features + 3D coordinates, 3D 坐标来自于激光雷达根据先验位姿找到附近的三维点,在先验位姿附近多次采样,根据这些位姿将三维点投影到当前图像中进._predicted iddt per position

记录安装tidyverse包遇到的问题_安装tidyverse包冲突-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏12次。说明:电脑是双系统,在ubuntu下进行的安装ggplot2包没什么问题直接在console输入:install.package(“ggplot2”)然后加载:library(ggplot2)安装tidyverse时出现了问题:1.无法打开tar包2.找不到 libxml2-dev3.找不到libcurl、openssl一:更换镜像在RStudio任务栏找到 Tools..._安装tidyverse包冲突

centos默认安装python版本执行python报错_could not find platform independent libraries <pre-程序员宅基地

文章浏览阅读3.4k次。centos系统默认安装python2.7,运行python命令报错[root@pc site-packages]# pythonCould not find platform independent libraries <prefix>Could not find platform dependent libraries <exec_prefix>Consider setting $PYTHONHOME to <prefix>[:<exec_prefix&_could not find platform independent libraries

推荐文章

热门文章

相关标签