vue.js整合vux中的上拉加载下拉刷新实例教程


Posted in Javascript onJanuary 09, 2018

前言

Vux 是基于 Vue 和 Weui 开发的手机端页面 UI 组件库,开发初衷是满足公司的微信端表单需求,因为第三方的调查问卷表单系统在手机上实在比较丑(还是 PC 那一套样式适配了大小而已)。于是用 vue 重构了表单组件,后来一发不可收拾把其他常用组件也一并开发了。

相比于 React 还是更喜欢用 Vue ,除了目前社区组件不多,周边构建工具还是比较完善的(作者也特别勤奋)。

下面话不多说了,来一看看详细的介绍吧。

先上图

vue.js整合vux中的上拉加载下拉刷新实例教程

创建项目

使用vue-cli 创建一个vue项目

安装vux,可以参考:vux快速入门

配置

安装 axios

yarn add axios
//...
 methods: {
 fetchData(cb) {
  axios.get('http://localhost:3000/').then(response => {
  this.$nextTick(() => {
   this.$refs.scrollerBottom.reset()
  })
  cb(response.data)
  })
 }
 }
//...

完善refresh,loadMore方法

//...
 methods: {
 refresh() {
  this.fetchData(data => {
  this.list = data.list
  this.$refs.scrollerBottom.enablePullup()
  this.$refs.scrollerBottom.donePulldown()
  })
 },
 loadMore() {
  this.fetchData(data => {
  if (this.list.length >= 10) {
   this.$refs.scrollerBottom.disablePullup()
  }
  this.list = this.list.concat(data.list)
  this.$refs.scrollerBottom.donePullup()
  })
 }
 }
//...

在组件加载的时候调用一下 loadMore 方法

//...
 mounted() {
 this.$nextTick(() => {
  this.$refs.scrollerBottom.reset({top: 0})
 })
 this.loadMore()
 }
//...

最后把html部分补全

<scroller>
 <div style="padding: 10px 0">
 <div class="box" v-for="(item, index) in list" :key="index">
  <p class="list"></p>
 </div>
 </div>
</scroller>

完整代码

<template>
 <div>
 <x-header :left-options="{'showBack': false}">上拉加载,下拉刷新</x-header>
 <scroller use-pullup :pullup-config="pullupDefaultConfig" @on-pullup-loading="loadMore"
    use-pulldown :pulldown-config="pulldownDefaultConfig" @on-pulldown-loading="refresh"
    lock-x ref="scrollerBottom" height="-48">
  <div style="padding: 10px 0">
  <div class="box" v-for="(item, index) in list" :key="index">
   <p class="list"></p>
  </div>
  </div>
 </scroller>
 </div>
</template>
<script>
 import {Scroller, XHeader} from 'vux'
 import axios from 'axios'

 const pulldownDefaultConfig = {
 content: '下拉刷新',
 height: 40,
 autoRefresh: false,
 downContent: '下拉刷新',
 upContent: '释放后刷新',
 loadingContent: '正在刷新...',
 clsPrefix: 'xs-plugin-pulldown-'
 }
 const pullupDefaultConfig = {
 content: '上拉加载更多',
 pullUpHeight: 60,
 height: 40,
 autoRefresh: false,
 downContent: '释放后加载',
 upContent: '上拉加载更多',
 loadingContent: '加载中...',
 clsPrefix: 'xs-plugin-pullup-'
 }
 export default {
 components: {
  XHeader,
  Scroller
 },
 mounted() {
  this.$nextTick(() => {
  this.$refs.scrollerBottom.reset({top: 0})
  })
  this.loadMore()
 },
 data() {
  return {
  list: [],
  pullupDefaultConfig: pullupDefaultConfig,
  pulldownDefaultConfig: pulldownDefaultConfig
  }
 },
 methods: {
  fetchData(cb) {
  axios.get('http://localhost:3000/').then(response => {
   this.$nextTick(() => {
   this.$refs.scrollerBottom.reset()
   })
   cb(response.data)
  })
  },
  refresh() {
  this.fetchData(data => {
   this.list = data.list
   this.$refs.scrollerBottom.enablePullup()
   this.$refs.scrollerBottom.donePulldown()
  })
  },
  loadMore() {
  this.fetchData(data => {
   if (this.list.length >= 10) {
   this.$refs.scrollerBottom.disablePullup()
   }
   this.list = this.list.concat(data.list)
   this.$refs.scrollerBottom.donePullup()
  })
  }
 }
 }
</script>
<style lang="less">
 .box {
 padding: 5px 10px 5px 10px;
 &:first-child {
  padding: 0 10px 5px 10px;
 }
 &:last-child {
  padding: 5px 10px 0 10px;
 }
 }
 .list {
 background-color: #fff;
 border-radius: 4px;
 border: 1px solid #f0f0f0;
 padding: 30px;
 }
 .xs-plugin-pulldown-container {
 line-height: 40px;
 }
 .xs-plugin-pullup-container {
 line-height: 40px;
 }
</style>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery常用操作方法及常用函数总结
Jun 19 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
Jul 28 Javascript
JavaScript驾驭网页-CSS与DOM
Mar 24 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 #Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
Jan 09 #Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 #Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 #Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 #Javascript
浅谈Vue2.0父子组件间事件派发机制
Jan 08 #Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 #jQuery
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
迁移PHP版本到PHP7
2015/02/06 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
CSS常用网站布局实例
2008/04/03 Javascript
js获取视频时长代码
2014/04/10 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
js轮播图代码分享
2016/07/14 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
python中time tzset()函数实例用法
2021/02/18 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
PHP中如何使用Cookie
2015/10/28 面试题
商务英语专业毕业生自荐信
2013/11/05 职场文书
商场中秋节广播稿
2014/01/17 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
倡议书格式
2014/04/14 职场文书
旅游安全协议书
2014/04/21 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
还款承诺书范本
2015/01/20 职场文书
公司员工体检通知
2015/04/21 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
七一活动主持词
2015/06/29 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书