uniapp vue mixin使用
- 这个mixin的翻版,主要用来分离处理列表数据逻辑
- 我用了覆写模式
- 创建mixin ListMoreDataMixin
// 由于没有超类的限制这里要判断下
function ____checkGetData(context) {
if (!context.getData || typeof context.getData !== 'function') {
throw new Error(
'使用[ListMoreDataMixin]必须实现getData函数')
}
}
export const ListMoreDataMixin = {
data() {
return {
listData: [], // 数据列表
page: 1, // 1
isLoading: false, // 是否在加载数据
}
},
methods: {
// 初始化数据
async initData() {
____checkGetData(this);
this.isLoading = true
const data = await this.getData();
this.listData = data;
this.isLoading = false;
},
// 上拉加载更多
async loadMore() {
____checkGetData(this);
this.isLoading = true;
this.page += 1;
const data = await this.getData();
if (!data.length) {
this.page--;
}
this.listData = [...this.listData, ...data];
this.isLoading = false;
},
// 下拉刷新
async onRefresh(done) {
____checkGetData(this);
this.page = 1;
this.listData = await this.getData();
done()
}
},
mounted() {
this.initData();
}
}
- 组件,这里用的uniapp
<myJobList @refresh="onRefresh" @loadMore="loadMore">
<myJobListItem v-for="it in listData" :data="it" v-key="it.id"></myJobListItem>
</myJobList>
<script>
import myJobListItem from 'widgets/my-job-list-item.vue';
import myJobList from 'widgets/my-job-list.vue';
import { ListMoreDataMixin } from 'list-more-data-mixin.js';
export default {
components: { myJobListItem, myJobList },
mixins: [ListMoreDataMixin],
methods: {
// ListMoreDataMixin
async getData() {
return new Promise(res => {
this.postHttp({
url: '/api/xxx',
data: {},
success(r) {
res(r.data);
}
});
});
},
}
};
</script>
- myJobList
<template>
<scroll-view
style="height: 100%;"
scroll-y="true"
scroll-with-animation="true"
refresher-enabled="true"
:refresher-triggered="isRefresh"
@refresherrefresh="refresherrefresh"
@scrolltolower="lower"
>
<slot></slot>
</scroll-view>
</template>
<script>
export default {
name: 'my-job-list',
data() {
return {
isRefresh: false
};
},
methods: {
lower(e) {
this.$emit('loadMore')
},
/**
* 下拉刷新
*/
refresherrefresh() {
this.isRefresh = true;
this.$emit('refresh', () => {
this.isRefresh = false;
});
}
}
};
</script>
uniapp vue mixin使用的更多相关文章
- vue.mixin与vue.extend
vue.mixin 全局注册一个混合,影响注册之后所有创建的每个 Vue 实例.谨慎使用全局混合对象,因为会影响到每个单独创建的 Vue 实例(包括第三方模板).大多数情况下,只应当应用于自定义选项, ...
- vue mixin使用
1.概述 将一些公用方法引入到不同的组件中. 2.引入方式 (1)全局引入 // 注册全局Mixin Vue.mixin({ methods: { $touch: function() { // 用以 ...
- Vue.mixin Vue.extend(Vue.component)的原理与区别
1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...
- 理解Vue.mixin,带你正确的偷懒
关于Vue.mixin在vue官方文档中是这么解释的: 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有 ...
- 使用uni-app(Vue.js)创建运行微信小程序项目步骤
使用uni-app(Vue.js)开发微信小程序项目步骤 1. 新建一个uni-app项目 创建完成后的目录结构 2. 打开微信小程序开发工具端的端口调试功能 3. 运行创建的项目 效果
- uni-app,vue,react,Trao之缓存类封装
uni-app,vue,react,Trao之缓存类封装 一,介绍与需求 1.1,介绍 缓存主要分为如下几个 1.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏 ...
- 一、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-项目引言
项目文章索引 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展面板的 ...
- 【手把手教程】uniapp + vue 从0搭建仿微信App聊天应用:腾讯云TXIM即时通讯的最佳实践
基于uniapp + vue 实现仿微信App聊天应用实践,实现以下功能 1: 用户登陆 2: 聊天会话管理 3: 文本/图片/视频/定位消息收发 4: 贴图表情消息收发 5: 一对一语音视频在线通话 ...
- 【手把手教程】uniapp + vue 从0搭建仿斗鱼虎牙直播App:腾讯云MLVB移动直播实践连麦PK+带货
基于uniapp + vue 实现仿斗鱼虎牙腾讯云移动直播应用实践,实现以下功能 1: 用户登陆 2: 房间管理 3: 房间聊天 4: 直播美颜 5: Svga礼物动画 6: 一对一连麦观众 项目开发 ...
随机推荐
- 浅谈自动化构建之gulp
一.gulp的基本使用 gulp是目前最流行的前端自动化构建系统,核心特点高效易用.(这块不过多的废话了,直接上干货了,有兴趣的话,可以查下gulp简介) 步骤如下: yarn init -y yar ...
- 洛谷P2145
Description 给定一串数字,每个数字代表一种颜色 你可以向这个数字序列里加任意数字,每加一个视为一次操作 当你加入的数字和与它相连的同种数字不少于三个时,他们就会消除 消除后序列的两端自动靠 ...
- Java三种IO模型和LinuxIO五种IO模型
Java: https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/BIO-NIO-AIO.md https://github.co ...
- 在.NetCore(C#)中使用ODP.NET Core+Dapper操作Oracle数据库
前言 虽然一直在说"去IOE化",但是在国企和政府,Oracle的历史包袱实在太重了,甚至很多业务逻辑都是写在Oracle的各种存储过程里面实现的-- 我们的系统主要的技术栈是Dj ...
- ES6(四)用Promise封装一下IndexedDB
indexedDB IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据,它可以被网页脚本创建和操作. IndexedDB 允许储存大量数据,提供查找接口,还能建立索引,这些都是 ...
- HDU6311 Cover【欧拉路径 | 回路】
HDU6311 Cover 题意: 给出\(N\)个点的简单无向图,不一定联通,现在要用最少的路径去覆盖所有边,并且每条边只被覆盖一次,问最少路径覆盖数和各条路径 \(N\le 10^5\) 题解: ...
- NOIP2015提高组 信息传递 ---并查集问题
题目描述 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学. 游戏开始时,每人都只 ...
- 【noi 2.6_9277】Logs Stacking堆木头(DP)
题意:给出在最底层的木头的个数,问有多少种堆放木头的方式.要求木头必须互相挨着在一起. 解法:f[i]表示最底层i个木头的堆放木头的方式.注意递推的思想!只需知道上一层堆放0~i-1个(即最底层堆放i ...
- ACM#学习心得0
加入实验室也有些日子了,这是第一个近来的小小学习心得 1.在之前的训练题和考核题以及平时刷过的题中,我发现自己对字符串这一块的基础知识掌握还是比较差的,总是不能正确的接收的字符或字符串. 这两个星期, ...
- Codeforces Round #654 (Div. 2) B. Magical Calendar (结论)
题意:你需要在长度从\(1\)~\(k\),宽度无限的网格图中造图形(每个点四周必须连通),问最多能造出多少种不同的图形. 题解:感觉没什么好说的,就是画图找规律,如果\(r\ge n\)的话(即没有 ...