[youzan/vant-weapp]日历组件 default-date 属性在苹果手机上动态修改不生效

2024-02-18 828 views
7
Vant Weapp 版本

1.11

描述一下你遇到的问题。

设备:苹果11 平台:小程序 组件:日历组件 问题:default-date 动态修改在苹果手机上未生效

重现步骤

1 给日历组件设置动态default-date属性 2 一段时间后更改,default-date 未生效

设备/浏览器

苹果11微信小程序

回答

4

可以提供一个复现小程序代码吗

9
<template>
    <u--input fontSize="28rpx" color="#B9C5D3" disabled disabledColor="#fff"
                    v-model="params.firstDeliveryDate" placeholder="请选择首次发货日期">
                  </u--input>
  <u--input fontSize="28rpx" color="#B9C5D3" disabled disabledColor="#fff" v-model="params.dayValue"
                    placeholder="请输入天数">
                  </u--input>
    <van-calendar color="#3194f2" title="日历" :poppable="false" :show-confirm="false" class="calendar" readonly
          type="multiple" :default-date="defaultDate"  :max-date="maxDate" :show-title="false" />
</template>
export default {
  data () {
   params: {
        dayValue: '', //天数
        firstDeliveryDate: '' //首次发货日期
      },
numberOfTimes:99,
maxDate:new Date().getTime() 
 },
  computed: {
    defaultDate () {
      const { dayValue, firstDeliveryDate } = this.params
      if (!dayValue || !firstDeliveryDate) return []
      const tmp = []
      for (let i = 0, n = this.numberOfTimes; i < n; i++) {
        tmp.push(new Date(firstDeliveryDate).getTime() + 24 * 60 * 60 * 1000 * (dayValue + 1) * i)
      }
      this.maxDate = tmp.at(-1)
      return tmp
    }
  },
}
3

把项目代码改了改粘过来了 这样行吗

5

你这个是uniapp上使用的吧。 目前不解决非原生小程序使用的问题,可能是一些编译的问题,可以将问题提至官方。

5
<view>
<van-calendar class="calendar data-v-74fc1ab6" vue-id="2a87bd10-5" color="#3194f2" title="日历" poppable="{{false}}" show-confirm="{{false}}" readonly="{{true}}" type="multiple" default-date="{{defaultDate}}" max-date="{{maxDate}}" show-title="{{false}}" data-com-type="wx" bind:__l="__l"></van-calendar>
</view>
  computed: {
    defaultDate: function defaultDate() {
      var _this$params = this.params,
        dayValue = _this$params.dayValue,
        firstDeliveryDate = _this$params.firstDeliveryDate;
      if (!dayValue || !firstDeliveryDate) return [];
      var tmp = [];
      for (var i = 0, n = this.numberOfTimes; i < n; i++) {
        tmp.push(new Date(firstDeliveryDate).getTime() + 24 * 60 * 60 * 1000 * (dayValue + 1) * i);
      }
      this.maxDate = tmp.at(-1);
      return tmp;
    }
  },

这个代码片段是微信原生的