uni-data-picker 数据不能回显问题

移动端localdata属性赋值后不能回显问题,可以通过组件的@popupopened方法触发show()方法重新打开组件解决。

<template>
  <view class="create-container">
    <uni-forms ref="baseForm" :modelValue="formModal" label-width="130px">
      <uni-forms-item
        :required="item.required"
        :rules="[{ required: true, errorMessage: `${item.label}不能为空!` }]"
        :name="item.field"
        :label="item.label"
        v-for="(item, index) in createBasicFromItem"
        :key="index"
      >

        <uni-data-picker
          :key="index"
          ref="myPicker"
          :readonly="item?.disabled && item?.disabled(formModal)"
          v-model="formModal[item.field]"
          :map="item?.map"
          @change="handelChange(item)"
          :localdata="optionsData[item.field] || []"
          @popupopened="initData(item, index)"
          :border="false"
          placeholder=""
          :popup-title="`请选择${item.label}`"
        >
        </uni-data-picker>
      </uni-forms-item>
    </uni-forms>
  </view>
</template>

<script setup lang="ts">
import { createBasicFromItem } from "../scheduling.data";
import { ref} from "vue";


const myPicker = ref();
const optionsData = ref({});

const formModal = ref({});

const initData = async (record, index) => {
  if (optionsData.value[record.field]?.length) return; //防止重新打开弹窗
  
  if (record?.api && typeof record.api === "function") {
    const result = await record.api(formModal.value);
    optionsData.value[record.field] = result;
    myPicker.value[index].show(); //重新渲染数据
  }
};



</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值