当前位置: 首页 > article >正文

【uniapp重大bug】uni-data-select的localdata改变,也会触发@change方法

bug描述

uni-data-select的下拉列表值localdata是动态获取的,且绑定了@change方法,在页面加载后,请求localdata的列表数据,给localdata重新赋值,此时发现自动触发了@change方法

当前uni版本:^2.0.2-3070920230324001 vue2

bug复现过程

页面写个简单的演示代码:

<uni-forms ref="form" :modelValue="formObj" label-position="top" label-width="100%">
  <uni-forms-item label="绑定单位:">
    <uni-data-select
      v-model="formObj.tenantId"
      :localdata="tenantList"
      placeholder="请选择绑定单位"
      @change="changeTenant"
    ></uni-data-select>
  </uni-forms-item>
</uni-forms>

export default {
  data() {
	return {
	  tenantList: [],
      formObj: {
        tenantId: null,
      },
	}	
  },
  methods: {
	changeTenant(e) {
      console.log('uni-data-select改变了')
    },
  }
}

这样写没啥事,此时localdata绑定的是个静态值,下面我们改变一下localdata(想当于实际业务中的获取接口值)
我们在created()中改变该值:

setTimeout(() => {
  this.tenantList = [
    { value: 1, text: '中国移动', },
    { value: 2, text: '中国联通', },
  ]
}, 1000)

这时你会发现,已经自动触发@change方法了,而且还触发了两次
在这里插入图片描述

解决方案

这是组件的问题,没法从根源解决

其他方案

不要使用组件的@change方法,自己用watch监听值变化吧


http://www.kler.cn/a/287945.html

相关文章:

  • SpringSecurity 鉴权认证入门讲解
  • hive表名重命名、rename重命名
  • MySQL缓存使用率超过80%的解决方法
  • 进程信号
  • 【C++】list 与 string 基础与实现字符串操作
  • js像循环数组那样循环一个数字,Array.from()
  • Unity(2022.3.41LTS) - UI简介,了解
  • 鸿蒙(API 12 Beta3版)【媒体资源使用指导】Media Library Kit媒体文件管理服务
  • PHP高效进销存管理系统智能管理库存销售与采购系统小程序源码
  • Java 实现二叉树展平为链表
  • python打包 exe 提示no module named flask
  • 关于zotero无法识别拖入的pdf和caj的题录信息
  • 安全随机数生成指南
  • 38次8.28(docker03:容器网络,主从镜像)
  • 23种设计模式之代理模式
  • 如何写接口自动化测试断言?
  • SpringBoot 数据访问-jpa
  • 【CSS】如何写渐变色文字并且有打光效果
  • 嵌入式系统基础知识介绍
  • DAY65
  • 基于STM32和OpenCV的车载智能导航系统:实现实时交通标志与信号识别与预警(代码示例)
  • 将string类中能够实现的操作都封装在MyString类中
  • 如何保证Redis与Mysql双写一致性?
  • 【话题讨论】VS Code:倍增编程动力,实现效率飞跃
  • TCP 和 UDP 区别
  • c++ 定义宏常量