element日历组件内嵌套排班模板解决选择器选择时未响应问题

效果图:

在使用日历组件内套select会导致选择器选择后不会立马生效需要点击一下日历组件内任意位置才可以生效,这样的用户体验肯定是不行的源码:

<el-calendar v-model="value" v-loading="loading">
        <template slot="dateCell" slot-scope="{data}">
          <span>{{ data.day.split('-').slice(2).join('-') }}</span>
          <div :class="'is-selected'">
            <div class="left">
              <div>白班</div>
              <div>夜班</div>
              <div>值日</div>
            </div>
            <div class="right" v-show="!clickEdit">
              <div v-if="events && events[data.day]" :style="{ 'color' : events[data.day] ? 'green' : 'gray' }">
                {{ events[data.day].morning? (events[data.day].morning).toString() : '' }}
              </div>
              <div v-if="events && events[data.day]" :style="{ 'color' : events[data.day] ? 'green' : 'gray' }">
                {{ events[data.day].afternoon? (events[data.day].afternoon).toString() : '' }}
              </div>
              <div v-if="events && events[data.day]" :style="{ 'color' : events[data.day] ? 'green' : 'gray' }">
                {{ events[data.day].night? (events[data.day].night).toString() : '' }}
              </div>
            </div>
            <div class="editRight" v-show="clickEdit">
              <div v-if="listData[data.day]">
                <el-select :multiple-limit="2" v-model="listData[data.day].morningIds" size="mini" multiple
                           collapse-tags placeholder="请选择" style="padding: 0;margin:0" @change="chooseFn"
                           v-loading="calendarLoading">
                  <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"/>
                </el-select>
              </div>
              <div v-if="listData[data.day]">
<!--      select          -->
                <el-select :multiple-limit="2" v-model="listData[data.day].afternoonIds" size="mini" multiple
                           collapse-tags placeholder="请选择" style="padding: 0;margin:0" @change="chooseFn"
                           v-loading="calendarLoading">
                  <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"/>
                </el-select>
              </div>
              <div v-if="listData[data.day]">
                <el-select :multiple-limit="2" v-model="listData[data.day].nightIds" size="mini" multiple collapse-tags
                           placeholder="请选择" style="padding: 0;margin:0" @change="chooseFn"
                           v-loading="calendarLoading">
                  <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"/>
                </el-select>
              </div>
            </div>
          </div>
        </template>
</el-calendar>

解决方法:

chooseFn() {
      // select 延迟显示解决更新不及时问题
      this.calendarLoading = true
      setTimeout(() => {
        this.calendarLoading = false
      },)
    },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值