《uniapp遇到的问题》 详情 ------ 编号:002

本文介绍了一种在Vue中批量更新数据并使用Promise模拟回调的方法,通过对$set进行封装,实现了批量更新数据的能力,同时通过比较传入对象数量与已更新数量确保同步执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于全局重写setData

目标效果,

在不单独引用的前提下,能够通过this.setData({},()=> { // 同时还能有类似回调函数的效果 });

已成功,代码如下

function(obj) {
	let that = this,
		keys = [],
		val,data,
		b = Object.keys(obj);
		return new Promise((resolve, reject)=> {
			let havSetedNum = 0; // 已经修改过视图值的数量
			Object.keys(obj).forEach((key)=> {
				keys = key.split('.');
				val = obj[key];
				data = that.$data;
				that.$set(data,key,val);
				havSetedNum++;
			});
			console.log('b is', b);
			console.log('havSetedNum is', havSetedNum);
			if(havSetedNum == b.length) { // 模拟回调
				resolve(true);
			}
		})
}

该方法要写在main.js文件里

如下写法即可

Vue.prototype.setData = function(obj) {...}

 然后就可在功能页面上如下调用

原理也很简单,既是对$set进行封装,利用Object.keys().forEach进行数据便利,使其具有批量更新能力。

同时加了一层Promise,通过比较传入的对象数量 以及 $set()了的对象数量,来模拟出一个回调函数,为后续链式功能提供位置,避免异步。

 

tips: 只是简单的封装了一下,路过的各位大佬若有高见,欢迎指点哈~ 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

97pra

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值