微信小程序 数据交互与渲染实例详解


Posted in Javascript onJanuary 21, 2017

微信小程序 数据交互与渲染

实现效果图:

微信小程序 数据交互与渲染实例详解

微信小程序的api中提供了网络交互的api,我们只要调用即可和后端进行数据交互,该api为wx.request.,具体代码如下。

//list.js 
//获取应用实例 
var app = getApp() 
Page({ 
 data: { 
  list:[], 
  hiddenLoading: true, 
  url: '' 
 }, 
 loadList: function () { 
  var that = this; 
  that.setData({ 
   hiddenLoading: !that.data.hiddenLoading 
  }) 
  var url = app.urls.CloudData.getList; 
  that.setData({ 
   url: url 
  }); 
  wx.request({ 
   url: url, 
   data: {}, 
   method: 'GET', 
   success: function (res) { 
    var list= res.data.list; 
    if (list == null) { 
     list = []; 
    } 
    that.setData({ 
     list: list, 
     hiddenLoading: !that.data.hiddenLoading 
    }); 
     wx.showToast({ 
     title: "获取数据成功", 
     icon: 'success', 
     duration: 2000 
    }) 
   }, 
   fail: function (e) { 
    var toastText='获取数据失败' + JSON.stringify(e); 
    that.setData({ 
     hiddenLoading: !that.data.hiddenLoading 
    }); 
    wx.showToast({ 
     title: toastText, 
     icon: '', 
     duration: 2000 
    }) 
   }, 
   complete: function () { 
    // complete 
   } 
  }), 
 //事件处理函数 
 bindViewTap: function () { 
  wx.navigateTo({ 
   url: '../logs/logs' 
  }) 
 }, 
 onLoad: function () { 
 
 }, 
 onReady: function () { 
  this.loadList(); 
 }, 
 onPullDownRefresh: function () { 
  this.loadList(); 
  wx.stopPullDownRefresh() 
 } 
})

在loadList函数中进行了网络请求,请求的数据放到了data的list中。我们使用setData来修改list,在该函数调用之后,微信小程序的框架就会判断数据状态的变化,然后进行diff判断,如果有变化就渲染到界面中。这个与react.js的渲染方式相似,主要是内部维护了一个类似于虚拟文档的对象,然后通过对虚拟文档的判断来呈现界面,这样可以大大提高性能。

这里我们还做了一个下拉刷新的触发,即onPullDownRefresh函数,为了能够使用下拉刷新,我们需要进行配置,现在我们只需要当前页面生效,所以只要在对应页的json中配置即可,即在list.json中配置。

list.json

{ 
  "navigationBarTitleText": "产品列表",   
  "enablePullDownRefresh":true 
}

如果需要所有的页面的生效,可以在app.json中的window中配置。

app.json

{ 
 "pages":[ 
  "pages/index/index", 
  "pages/logs/logs", 
  "pages/list/list" 
 ], 
 "window":{ 
  "backgroundTextStyle":"light", 
  "navigationBarBackgroundColor": "#fff", 
  "navigationBarTitleText": "WeChat", 
  "navigationBarTextStyle":"black", 
  "enablePullDownRefresh":true 
 } 
}

在app.json中,还有一个pages,我们需要路由的页面都需要在这里注册,否则无法路由到。

在请求数据的时候,加入了等待和获取成功失败的提示。这需要相应的页面配合,页面代码list.wxm.如下

<!--list.wxml--> 
<view class="container container-ext"> 
 <!--默认隐藏--> 
 <loading hidden="{{hiddenLoading}}">正在加载</loading> 
 <scroll-view scroll-y="true"> 
  <view> 
   <block wx:for="{{list}}" wx:key="no"> 
    <view class="widget"> 
     <view> 
      <text >{{item.no}}({{item.content}})</text> 
     </view> 
    </view> 
   </block> 
  </view> 
 </scroll-view> 
</view>
/**list.wxss**/ 
 
.widget { 
 position: relative; 
 margin-top: 5rpx; 
 margin-bottom: 5rpx; 
 padding-top: 10rpx; 
 padding-bottom: 10rpx; 
 padding-left: 40rpx; 
 padding-right: 40rpx; 
 border: #ddd 1px solid; 
}
/**app.wxss**/ 
.container { 
 height: 100%; 
 display: flex; 
 flex-direction: column; 
 align-items: center; 
 justify-content: space-between; 
 box-sizing: border-box; 
 padding-top: 10rpx; 
 padding-bottom: 10rpx; 
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
Add a Table to a Word Document
Jun 15 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
node.js中watch机制详解
Nov 17 Javascript
JS常用知识点整理
Jan 21 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
vue生成随机验证码的示例代码
Sep 29 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
js获取本日、本周、本月的时间代码
Feb 01 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 #Javascript
Bootstrap框架安装使用详解
Jan 21 #Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 #Javascript
微信小程序 九宫格实例代码
Jan 21 #Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 #Javascript
巧用canvas
Jan 21 #Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 #Javascript
You might like
终于听上了直流胆调频
2021/03/02 无线电
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
JS实现图片切换效果
2018/11/17 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
python通过post提交数据的方法
2015/05/06 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
python编写猜数字小游戏
2019/10/06 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
Python调用.NET库的方法步骤
2019/12/27 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
python中类与对象之间的关系详解
2020/12/16 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
工程造价专业大学生自荐信
2013/10/01 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
党员志愿者活动方案
2014/08/28 职场文书
诚实守信演讲稿
2014/09/01 职场文书
创先争优活动个人总结
2015/03/04 职场文书
学校实习推荐信
2015/03/27 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript