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事件 delegate()使用方法介绍
Oct 30 Javascript
jQuery jcrop插件截图使用方法
Nov 20 Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
分享jQuery封装好的一些常用操作
Jul 28 Javascript
jQuery简单实现中间浮窗效果
Sep 04 Javascript
学习vue.js中class与style绑定
Dec 03 Javascript
js实现一个简单的数字时钟效果
Mar 29 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
js中的数组对象排序分析
Dec 11 Javascript
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
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
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
php常量详细解析
2015/10/27 PHP
php创建类并调用的实例方法
2019/09/25 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
Python是编译运行的验证方法
2015/01/30 Python
Python脚本处理空格的方法
2016/08/08 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Django中多种重定向方法使用详解
2019/07/17 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
中国电视购物:快乐购
2017/02/04 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
写好自荐信的要点
2013/11/06 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
幼儿评语大全
2014/04/30 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
公司文体活动总结
2015/05/07 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL