首页 > 语言 > JavaScript > 正文

详解vue mint-ui源码解析之loadmore组件

2024-05-06 15:25:47
字体:
来源:转载
供稿:网友

本文介绍了vue mint-ui源码解析之loadmore组件,分享给大家,具体如下:

接入

官方接入文档mint-ui loadmore文档

接入使用Example

html

<div id="app">  <mt-loadmore :top-method="loadTop" :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :max-distance="150"         @top-status-change="handleTopChange" ref="loadmore">    <div slot="top" class="mint-loadmore-top">      <span v-show="topStatus === 'pull'" :class="{ 'rotate': topStatus === 'drop' }">↓</span>      <span v-show="topStatus === 'loading'">Loading...</span>      <span v-show="topStatus === 'drop'">释放更新</span>    </div>    <ul class="scroll-wrapper">      <li v-for="item in list" @click="itemClick(item)">{{ item }}</li>    </ul>  </mt-loadmore></div>

css

<link rel="stylesheet" href="https://unpkg.com/mint-ui/lib/style.css" rel="external nofollow" >*{  margin: 0;  padding: 0;}html, body{  height: 100%;}#app{  height: 100%;  overflow: scroll;}.scroll-wrapper{  margin: 0;  padding: 0;  list-style: none;}.scroll-wrapper li{  line-height: 120px;  font-size: 60px;  text-align: center;}

js 

<!-- 先引入 Vue --><script src="https://unpkg.com/vue/dist/vue.js"></script><!-- 引入组件库 --><script src="https://unpkg.com/mint-ui/lib/index.js"></script><script>  new Vue({    el: '#app',    data: {      list: [],      allLoaded: false,      topStatus: ''    },    created: function () {      var i =0, len=20;      for (; i< len; i++){        this.list.push('demo' + i);      }    },    methods: {      loadTop: function () { // 刷新数据的操作        var self = this;        setTimeout(function () {          self.list.splice(0, self.list.length);          var i =0, len=20;          for (; i< len; i++){            self.list.push('demo' + i);          }          self.$refs.loadmore.onTopLoaded();        }, 2000);      },      loadBottom: function () { // 加载更多数据的操作        //load data        //this.allLoaded = true;// 若数据已全部获取完毕        var self = this;        setTimeout(function () {          var i =0; len = 10;          for (; i< len; i++){            self.list.push('dddd' + i);          }          self.$refs.loadmore.onBottomLoaded();        }, 2000);      },      handleTopChange: function (status) {        this.topStatus = status;      },      itemClick: function (data) {        console.log('item click, msg : ' + data);      }    }  });</script>

实现原理解析

布局原理

loadmore组件内部由三个slot组成,分别为name=top,name=bottom,default; top用于展示下拉刷新不同状态展示的内容,初始设置margin-top为-top的高度来将自己隐藏 bottom同top,用于展示上拉加载更多不同状态展示的内容 default填充滚动详细内容
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选