Element UI日期選擇器默認顯示1970年解決方案

目錄

問題背景

問題根源

1. 數據綁定類型錯誤

?2. 初始化邏輯錯誤

?解決方案

核心思路

?步驟 1:正確初始化日期對象

步驟 2:處理數據交互

?步驟 3:處理年份切換事件

完整代碼示例

注意事項

?1. 時區問題

?2. 格式化綁定值

常見問題

1. 為什么用 `Date` 對象而不是字符串?

?2. 如何設置默認值?

3. 數據請求不更新?

總結


問題背景

在使用 Element UI 的日期選擇器組件 `<el-date-picker>` 時,開發者可能會遇到一個看似奇怪的現象:**日期控件默認顯示1970年**,而不是預期的當前年份。例如,當設置 `type="year"` 用于選擇年份時,控件初始化后默認選中1970年,用戶需要手動切換才能選擇正確的年份,這顯然不符合常規需求。

問題根源

1. 數據綁定類型錯誤


Element UI 的 `<el-date-picker>` 組件的 `v-model` **期望綁定一個合法的日期對象(`Date`)或時間戳**。如果直接綁定一個純數字(如 `2023`),組件會將其解析為從 **1970年1月1日(UTC時間)** 開始計算的毫秒數。例如:
- `v-model="2023"` 會被解析為 `2023ms`,對應的時間是 `1970-01-01T00:00:02.023Z`,因此年份顯示為1970。

?2. 初始化邏輯錯誤


以下是一個典型的錯誤代碼示例:

data() {return {year: new Date().getFullYear() // 返回數字,如 2023};
}


這里直接將年份數字綁定到組件,導致解析錯誤。

?解決方案

核心思路


確保 `v-model` 綁定的值是一個合法的日期對象(`Date`),而非純數字或字符串年份。

?步驟 1:正確初始化日期對象


將 `year` 的初始值設置為當前時間的 `Date` 對象:

data() {return {year: new Date() // 正確:綁定日期對象};
}

步驟 2:處理數據交互


如果后端接口需要數字類型的年份,可以通過 `getFullYear()` 方法從日期對象中提取:

// 提交數據時轉換
const selectedYear = this.year.getFullYear(); // 獲取數字年份,如 2023

?步驟 3:處理年份切換事件


為 `<el-date-picker>` 添加 `@change` 事件,實現年份切換時自動更新數據:

<el-date-pickerv-model="year"type="year"placeholder="選擇年"@change="handleYearChange" <!-- 監聽年份變化 -->
/>
methods: {handleYearChange() {this.loadData(); // 重新加載數據或更新圖表},async loadData() {const year = this.year.getFullYear();const response = await fetchData(year); // 調用接口獲取數據this.updateChart(response.data);}
}

完整代碼示例

<template><div><el-date-pickerv-model="year"type="year"placeholder="選擇年"@change="handleYearChange"/><!-- 其他依賴年份數據的組件 --></div>
</template><script>
export default {data() {return {year: new Date() // 正確初始化};},methods: {handleYearChange() {this.loadChartData();},async loadChartData() {const currentYear = this.year.getFullYear();const data = await this.$api.getChartData(currentYear);this.renderChart(data);}}
};
</script>

注意事項

?1. 時區問題


- `new Date()` 返回的是瀏覽器本地時間的日期對象,確保后端接口和前端時區一致。
- 如果需要UTC時間,使用 `new Date(Date.UTC(year, 0, 1))` 構造日期。

?2. 格式化綁定值


如果希望 `v-model` 直接綁定字符串格式的年份(如 `"2023"`),可使用 `value-format`:

<el-date-pickerv-model="year"type="year"value-format="yyyy" <!-- 綁定值格式化為字符串 -->@change="handleYearChange"
/>


此時初始化值應為:

data() {return {year: new Date().getFullYear().toString() // "2023"};
}

常見問題

1. 為什么用 `Date` 對象而不是字符串?


Element UI 的日期組件內部依賴日期對象進行解析和格式化,直接使用字符串或數字可能導致意外行為。

?2. 如何設置默認值?

  • 當前年份:`year: new Date()`
  • 指定年份:`year: new Date(2020, 0, 1)`(注意月份從0開始)

3. 數據請求不更新?


確保在 `@change` 事件中重新觸發數據加載邏輯,并銷毀舊圖表實例(如果使用 ECharts 等庫)。

總結

通過綁定 `Date` 對象而非數字、正確處理數據轉換和事件監聽,可以徹底解決 Element UI 日期選擇器默認顯示1970年的問題。關鍵在于理解組件的數據格式要求,并遵循以下原則:

  1. 初始化時使用日期對象。
  2. 交互時提取年份數字。
  3. 動態切換時刷新數據。

正確實現后的效果:日期選擇器默認顯示當前年份,切換年份時數據動態更新,用戶體驗流暢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70512.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70512.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70512.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kafka-保姆級配置說明(producer)

配置說明的最后一部分&#xff1b; ##指定kafka集群的列表&#xff0c;以“,”分割&#xff0c;格式&#xff1a;“host:port,host:port” ##此列表用于producer&#xff08;consumer&#xff09;初始化連接使用&#xff0c;server列表可以為kafka集群的子集 ##通過此servers列…

.NET周刊【2月第2期 2025-02-09】

國內文章 開箱即用的.NET MAUI組件庫 V-Control 發布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介紹了V-Control&#xff0c;一個適用于.NET MAUI的組件庫。作者計劃將其開源&#xff0c;強調.NET MAUI是生產力強的跨平臺移動開發工具。V-Control提供多種組件…

PHP2(WEB)

##解題思路 打開頁面什么線索都沒有&#xff0c;目錄掃描只是掃出來一個index.php&#xff0c;而源代碼沒有東西&#xff0c;且/robots.txt是不允許訪問的 于是一番查詢后發現&#xff0c;有個index.phps的文件路徑&#xff0c;里頭寫著一段php的邏輯&#xff0c;對url的id參數…

VisActor/VTable - 快速搭建表格

VTable源于VisActor體系&#xff0c;該體系是從字節跳動大量可視化場景沉淀而來&#xff0c;旨在提供面向敘事的智能可視化解決方案。VisActor包括渲染引擎、可視化語法、數據分析組件、圖表組件、表格組件、GIS組件、圖可視化組件、智能組件等多個模塊&#xff0c;以及周邊生態…

c++第一課(基礎c)

目錄 1.開場白 2.char&#xff08;字符&#xff09; 3.字符數組 4.ASCII碼 1.開場白 OK&#xff0c;咱們也是億&#xff08;不是作者故意的&#xff09;天沒見&#xff0c;話不多說&#xff0c;直接開始&#xff01; 2.char&#xff08;字符&#xff09; 眾所不周知&…

2025年02月21日Github流行趨勢

項目名稱&#xff1a;source-sdk-2013 項目地址url&#xff1a;https://github.com/ValveSoftware/source-sdk-2013項目語言&#xff1a;C歷史star數&#xff1a;7343今日star數&#xff1a;929項目維護者&#xff1a;JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…

【簡單】209.長度最小的子數組

題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 target 的長度最小的 子數組 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其長度。如果不存在符合條件的子數組&#xff0c;返回0。 示例 1&#xff1a; 輸入&am…

【STM32】內存管理

【STM32】內存管理 文章目錄 【STM32】內存管理1、內存管理簡介疑問&#xff1a;為啥不用標準的 C 庫自帶的內存管理算法&#xff1f;2、分塊式內存管理&#xff08;掌握&#xff09;分配方向分配原理釋放原理分塊內存管理 管理內存情況 3、內存管理使用&#xff08;掌握&#…

Linux 命令大全完整版(14)

5. 文件管理命令 chgrp(change group) 功能說明&#xff1a;變更文件或目錄的所屬群組。語  法&#xff1a;chgrp [-cfhRv][–help][–version][所屬群組][文件或目錄…] 或 chgrp [-cfhRv][–help][–version][–reference<參考文件或目錄>][文件或目錄…]補充說明&…

[數據結構]順序表詳解

目錄 一.線性表 二.順序表 2.1概念及結構 1. 靜態順序表&#xff1a;使用定長數組存儲元素。 2. 動態順序表&#xff1a;使用動態開辟的數組存儲。 2.1按需申請 2.2 接口實現&#xff1a;增刪查改 SeqList.h: SeqList.c: test.c 一.線性表 線性表 &#xff08; line…

綫性與非綫性泛函分析與應用_2.賦范向量空間-母本

第2章 賦范向量空間 1.向量空間;哈默爾基;向量空間的維數 - 定義與性質 - 向量空間的定義:設\mathbb{K}為數域,集合X是\mathbb{K}上的向量空間,若在X上定義了加法(x,y)\in X\times X\to x + y\in X和數乘(\alpha,x)\in\mathbb{K}\times X\to\alpha x\in X兩種運算,且滿足…

2025年- G17-Lc91-409.最長回文-java版

1.題目描述 2.思路 思路1: 判斷一個字符串中的字母個數是否是偶數個。 遍歷字符串&#xff0c;檢查每個字符是否是字母&#xff08;可以通過 Character.isLetter() 來判斷&#xff09;。 累加字母的個數。 最后判斷字母的個數是否是偶數。 思路2: 這段 Java 代碼的作用是 統…

SpringBoot+Mybatis-Plus實現動態數據源

目錄 一、前言二、代碼實現1&#xff09;工程結構2&#xff09;相關依賴3&#xff09;數據源攔截切面4&#xff09;動態數據源切換5&#xff09;核心配置類6&#xff09;使用 三、原理分析1&#xff09;mapper接口注入流程2&#xff09;動態數據源切換執行流程 四、聲明式事務導…

玩轉 Java 與 Python 交互,JEP 庫來助力

文章目錄 玩轉 Java 與 Python 交互&#xff0c;JEP 庫來助力一、背景介紹二、JEP 庫是什么&#xff1f;三、如何安裝 JEP 庫&#xff1f;四、JEP 庫的簡單使用方法五、JEP 庫的實際應用場景場景 1&#xff1a;數據處理場景 2&#xff1a;機器學習場景 3&#xff1a;科學計算場…

Qt常用控件之日歷QCalendarWidget

日歷QCalendarWidget QCalendarWidget 是一個日歷控件。 QCalendarWidget屬性 屬性說明selectDate當前選中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek設置每周的第一天是周幾&#xff08;影響日歷的第一列是周幾&#xff09;。gridVisible是否顯示日歷…

三數之和:經典問題的多種優化策略

三數之和&#xff1a;經典問題的多種優化策略 大家好&#xff0c;我是Echo_Wish。今天我們來聊一個經典的算法問題——三數之和&#xff08;3Sum&#xff09;。它是許多面試和算法競賽中常見的問題之一&#xff0c;也常常考察我們對算法優化的理解和技巧。我們不僅要解決問題&…

Go 語言中的協程

概念 Go語言中的協程&#xff08;Goroutine&#xff09;是一種由Go運行時管理的輕量級線程。它是Go語言并發模型的核心&#xff0c;旨在通過簡單、易用的方式支持高并發的程序設計。 創建協程 協程的創建非常簡單&#xff0c;只需要使用go關鍵字&#xff0c;后面跟著一個函數…

JAVA最新版本詳細安裝教程(附安裝包)

目錄 文章自述 一、JAVA下載 二、JAVA安裝 1.首先在D盤創建【java/jdk-23】文件夾 2.把下載的壓縮包移動到【jdk-23】文件夾內&#xff0c;右鍵點擊【解壓到當前文件夾】 3.如圖解壓會有【jdk-23.0.1】文件 4.右鍵桌面此電腦&#xff0c;點擊【屬性】 5.下滑滾動條&…

基于javaweb的SpringBoot個人博客系統設計和實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

三、linux字符驅動詳解

在上一節完成NFS開發環境的搭建后&#xff0c;本節將探討Linux字符設備驅動的開發。字符設備驅動作為Linux內核的重要組成部分&#xff0c;主要負責管理與字符設備&#xff08;如串口、鍵盤等&#xff09;的交互&#xff0c;并為用戶空間程序提供統一的讀寫操作接口。 驅動代碼…