【vant】van-list下拉加载更多onload事件

【vant】van-list下拉加载更多onload事件

问题描述

van-list编写下拉加载更多,利用van-list自带的下拉加载事件@load="onLoad",但是发现有次数限制,仍有部分条件下无法下拉加载更多。后来发现原因,执行完,之后finished恢复false,同时将当前页恢复为1,不写的话,代码不会自己恢复,因为这些参数是全局变量,所以会保留最后执行之后的结果。所以,在代码执行前要做一个恢复。细节很重要,因为这个细节,耽误了很久时间。

this.currentPage = 1;
//每次走完函数,将当前页恢复至1,防止后面累加,导致点击别的筛选条件时无效,返回finished-text
this.finished = false;
//同样,也要将finished恢复,否则,执行别的筛选条件时,会显示finished-text,并且导致明明还有数据,但是不会加载出来.

主要代码如下

<van-list
	v-model="loading"
	:finished="finished"
	finished-text="我是有底线的~"
	@load="onLoad">//list自带的下拉刷新事件
	<van-row
		v-for="(item,key) of Array"
		:key="key"
   </van-row>//循环,显示列表
</van-list>
selType(type) {//从前端的点击事件获得type
	this.selectedType = type;
	console.log(this.selectedType);
	this.currentPage = 1;
	//每次走完函数,将当前页恢复至1,防止后面累加,导致点击别的筛选条件时无效,返回finished-text
	this.finished = false;
	//同样,也要将finished恢复,否则,执行别的筛选条件时,会显示finished-text,并且导致明明还有数据,但是不会加载出来.
	this.onLoad();
},
onLoad(){
	this.search();
}

search() {//调用查询的接口
	let params = {
		type: this.selectedType, 
		index: this.currentPage,//页数
		size: this.pageSize,//每页个数
	}
.....(接口)(params).then(res => {
	console.log(res);
    this.dataTotal = res.total;
    //进行判断
	if(this.dataTotal <= this.pageSize){
		this.Array = res.data.list;
		console.log(this.Array);
	}else{
		this.currentPage++;
		let arr = res.data.data.list;
		this.Array = this.Array.concat(arr);
	};
	// 加载状态结束
	this.loading = false;
	// 数据全部加载完成
	if (this.Array.length >= this.dataTotal) {
		this.finished = true;//结束,显示我也是有底线的
	};
    });
}
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vant 是一个基于 Vue.js 的移动端 UI 组件库,其中也包含了下拉菜单组件 van-dropdown-menu。然而,Vantvan-dropdown-menu 组件目前并不支持可下拉可搜索的功能。 如果你需要实现可下拉可搜索的下拉菜单,可以考虑使用其他的 Vue.js 组件库,例如 Element UI 或 Vue Select。这些组件库提供了类似的下拉菜单组件,并且支持搜索功能。 以下是使用 Element UI 的 el-select 组件实现可下拉可搜索的示例: 1. 首先,安装 Element UI 并引入相关的 CSS 和 JavaScript 文件。你可以在 Element UI 的官方网站上找到相应的安装和引入方法。 2. 在 Vue 组件中,使用 el-select 组件创建可下拉可搜索的下拉菜单。设置 `filterable` 属性为 true,表示启用搜索功能。 ```vue <template> <el-select v-model="selectedOption" filterable> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"></el-option> </el-select> </template> <script> export default { data() { return { selectedOption: '', options: [ { value: 'option1', label: 'Option 1' }, { value: 'option2', label: 'Option 2' }, { value: 'option3', label: 'Option 3' }, ] }; } }; </script> ``` 在上述示例中,`selectedOption` 表示当前选中的选项,`options` 是下拉菜单的选项列表。你可以根据自己的需求来设置选项的值和显示文本。 通过设置 `filterable` 属性为 true, el-select 组件会在输入框中显示一个搜索框,用户可以在其中输入关键字进行搜索。 这样,你就可以使用 Element UI 的 el-select 组件实现可下拉可搜索的下拉菜单了。请确保已按照 Element UI 的文档正确引入相关文件,并在 Vue 组件中正确使用该组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值