当前位置: 首页 > 知识库问答 >
问题:

vue.js - 如何动态更新el-date-picker的disabledDate属性?

华章横
2024-12-15

我在点击按钮的时候,disabledDate ref确实变化了,但是el-date-picer上却没有变化,这该怎么办?

<script setup>
import {onUpdated, ref, watch} from "vue"
import {dayjs} from "element-plus"
const date = ref(dayjs().format("YYYY-MM"))
const disabledDate = ref((date) => { 
    return false
})
function changeMethon(type) {
    if(type === 1) {
        disabledDate.value = (date) => {
            console.log("type1 : ", date)
            return true
        }
    }else {
        disabledDate.value = (date) => {
            console.log("type2 : ", date)
            return false
        }
    }
}

onUpdated(() => {
    console.log("更新...", disabledDate.value)
})

</script>
<template>
    <el-date-picker
        v-model="date"
        type="month"
        format="YYYY-MM"
        value-format="YYYY-MM"
        style="width: 150px"
        :disabled-date="disabledDate"
    /> 
    <el-button @click="changeMethon(1)">切换禁止时间函数1</el-button>
    <el-button @click="changeMethon(2)">切换禁止时间函数2</el-button>
</template>

共有1个答案

唐睿
2024-12-15

使用 watch 监听 disabledDate 的变化,每当 disabledDate 发生变化时,都会在控制台输出新的值。可以保证 el-date-picker 组件能够检测到 disabledDate 的变化。

<script setup>
import { onUpdated, ref, watch } from "vue";
import { dayjs } from "element-plus";

const date = ref(dayjs().format("YYYY-MM"));
const disabledDate = ref((date) => { 
    return false;
});

function changeMethon(type) {
    if (type === 1) {
        disabledDate.value = (date) => {
            console.log("type1 : ", date);
            return true;
        };
    } else {
        disabledDate.value = (date) => {
            console.log("type2 : ", date);
            return false;
        };
    }
}

onUpdated(() => {
    console.log("更新...", disabledDate.value);
});

// 监听 disabledDate 的变化
watch(disabledDate, (newVal) => {
    console.log("disabledDate 变化了:", newVal);
});
</script>

<template>
    <el-date-picker
        v-model="date"
        type="month"
        format="YYYY-MM"
        value-format="YYYY-MM"
        style="width: 150px"
        :disabled-date="disabledDate"
    /> 
    <el-button @click="changeMethon(1)">切换禁止时间函数1</el-button>
    <el-button @click="changeMethon(2)">切换禁止时间函数2</el-button>
</template>
 类似资料:
  • el-date-picker defaultTime 动态赋值不生效

  • Date Picker component with a lot of options and easy to fit in your web application. Flat mode - as element in page Multiple calendars in the component Allows single, multiple or range selection Mark

  • Date Range Picker 是一个实现了日期范围选择的 jQuery 插件,需要 jQuery UI 1.7 或者以上版本的支持。 示例代码: $('input').daterangepicker( { presetRanges: [ {text: 'My Range', dateStart: '03/07/08', dateEnd: 'Today' } ] } );

  • Angular Date Time Picker Angular date time picker - Angular reusable UI componentThis package supports Angular 8 Breaking Changes The picker has been updated for Angular 7+ apps. Description Simple An

  • Rome 是一个日期和时间的选择器控件,不依赖于第三方库。 在线演示:https://bevacqua.github.io/rome

  • 描述 (Description) 您可以在内联选择器中选择值的数量。 就像日期有date, month, year和时间有hours, minutes, seconds 。 例子 (Example) 以下示例演示了在Framework7中使用Inline Picker/Date-time - <!DOCTYPE html> <html> <head> <meta name = "

  • jQuery Date Range Picker 是一个允许用户自己选择时间范围的 jQuery 插件,支持多语言,支持添加定义新语言。

  • jQuery Date Picker Plugin 是一个 jQuery 的日期选择插件。