weex学习之路(二)---组件封装(2)--下拉刷新和上拉加载
来源:互联网 发布:阳江网络问政平台官网 编辑:程序博客网 时间:2024/06/01 07:14
weex的list和scroller组件本身就支持下拉刷新和上拉加载(web端是有问题,下拉刷新用不了),不过在用下拉刷新的时候遇到一些坑(开发原生的同事说客户端对git的支持不是很友好,所以就自己写了一个简单的加载动画切换),代码具体如下:
<!--下拉刷新列表视图--> <template><div :style="styleRefreshStyle"> <list style="flex: 1;" :loadmoreoffset="loadmoreoffset" @scroll="viewScroll" @loadmore="loadmore"> <refresh class="flex_row" :style="refreshContainerStyle" @refresh="viewRefresh" @pullingdown="viewOnPullingDown" :display="showRefresh ? 'show' : 'hide'"> <div class="flex_row flex_v_center" :style="refreshContentStyle"> <image :src="images[currentAnimationFrame]" :style="imageStyle"></image> <div v-if="refreshTitle.length>0 && pullDownTipText.length>0 "> <text class="loading_text" v-if="refreshTitle.length>0">{{refreshTitle}}</text> <text class="loading_text" v-if="tipStatus===false">{{pullDownTipText}}</text> <text class="loading_text" v-if="tipStatus">{{refreshTipText}}</text> </div> </div> </refresh> <slot></slot> </list></div> </template> <script> import {timer} from "../utils/ExportWeexModel"; import weexUtils from "../utils/WeexUtils"; export default { props: { imageStyle: { default: { width: "224px", height: "126px" } }, refreshContainerStyle: { default: { width: "750px" } }, refreshContentStyle: { default: { paddingLeft: "100px" } }, images: { default: [ weexUtils.getResourcesURL("images/animation/pull_to_refresh_people_0.png", weex), weexUtils.getResourcesURL("images/animation/pull_to_refresh_people_1.png", weex), weexUtils.getResourcesURL("images/animation/pull_to_refresh_people_2.png", weex), weexUtils.getResourcesURL("images/animation/pull_to_refresh_people_3.png", weex), weexUtils.getResourcesURL("images/animation/pull_to_refresh_people_4.png", weex), weexUtils.getResourcesURL("images/animation/pull_to_refresh_people_5.png", weex) ]}, //刷新动画图片列表 refreshTitle: {default: ""}, pullDownTipText: {default: "松开后刷新"}, refreshTipText: {default: "正在加载中"}, frameTimes: {default: 130}, loadmoreoffset: {default: 120} }, data() { let web = weex.config.env.platform.toLowerCase() === "web"; let styleRefreshStyle={ flex:1 }; if(web){ styleRefreshStyle.height="100%"; } return { showRefresh: false, tipStatus: false, animationFrameHandler: null, currentAnimationFrame: 0, //当前下拉刷新动画的帧 styleRefreshStyle } }, methods: { /** * 下拉刷新动画帧控制 **/ viewRefreshAnimation() { console.log("开始执行动画刷新!--> " + this.currentAnimationFrame); timer.setTimeout(this.animationFrameHandler, this.frameTimes); }, viewOnPullingDown() { //开始动画 }, viewRefresh() { this.showRefresh = true; this.tipStatus = true; this.viewRefreshAnimation(); this.$emit("refreshPage", () => { this.refreshEnd(); }); }, refreshEnd(){ timer.setTimeout(() => { //结束动画 //this.viewRefreshAnimation(); this.showRefresh = false; timer.setTimeout(() => { this.tipStatus = false; }, 200); }, 500); }, loadmore() { this.$emit("loadmore"); }, viewScroll(event) { //页面滚动时调用的方法 this.$emit("pageScroller", event); } }, created() { const imagesLength = this.images.length; this.animationFrameHandler = () => { console.log("this.currentAnimationFrame--> " + this.currentAnimationFrame); if (this.currentAnimationFrame < imagesLength) { this.currentAnimationFrame++; } else { this.currentAnimationFrame = 0; } if (this.showRefresh) { this.viewRefreshAnimation(); } }; }} </script> <style scoped>.flex_v_center { align-items: center;}.flex_row { flex-direction: row;}.loading_text { font-size: 30px; color: #9c9c9c; text-align: center; padding-left: 10px;}
主要使用timer.setTimeout来切换动画图片(还有一个scroller的实现版本和这个基本相同,就是把list换成scroller)
完整源码–> github
阅读全文
0 0
- weex学习之路(二)---组件封装(2)--下拉刷新和上拉加载
- 上拉刷新,下拉加载(二)
- weex学习之路(二)---组件封装(1)
- Android 中 ListView 的 下拉刷新 和 上拉加载 的 重点及学习(二)
- ListView封装实现下拉刷新和上拉加载
- RecyclerView封装--添加下拉刷新和上拉加载更多
- 上拉刷新下拉加载(2)
- 针对自定义组件上拉刷新下拉加载更多PullToRefreshView的分析(二)
- 框架学习二:ListView的下拉刷新+上拉加载
- RecycleView上拉加载和下拉刷新二
- ListView封装实现下拉刷新和上拉加载(方式2)
- RecyclerView学习(2) 上拉加载 下拉刷新 高仿京东下拉刷新 支持扩展
- Android之实现ListView的“下拉刷新”、“上拉加载”、“自动加载”功能(二)
- MUI框架学习之[Ajax][下拉刷新][上拉加载]
- android之ListView上拉加载更多和下拉刷新
- Android UI 之 下拉刷新和上拉加载
- RecyclerView下拉刷新上拉加载(二)
- 下拉刷新上拉加载之MaterialRefreshLayout
- 用C++实现堆排序
- ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd
- 设计模式—策略模式
- Python3.6 20个入门级小程序(三)
- Spark安装(Ubuntu环境下)
- weex学习之路(二)---组件封装(2)--下拉刷新和上拉加载
- 疯狂上涨的 Python,开发者应从 2.x 还是 3.x 着手?
- 在阿里AI实验室做NLP高级算法工程师是一种什么样的体验?
- Java高并发秒杀API之DAO层实现(一)
- L1-001. Hello World
- jQuery ajax数据请求
- 欢迎使用CSDN-markdown编辑器
- 安卓开发日记---2017.10.23
- 17.10.23日报