关于表单元素 input 上的 v-model 绑定
一直以来我都有个错觉,认为在 input 等输入类型的表单元素上,v-model 指令绑定的是 value
属性和 change
事件,直到后来自己封装某个自定义指令的时候(需要手动触发一下双向绑定),使用 dispatch 分发 change
事件并没有触发绑定值的更新,遂去翻看文档,发现了以下内容。

看来有些事情还是不能想当然,多看文档总是对的。。。
总结: 官方文档中,input 元素上的 v-model 绑定的是
value
属性和input
事件。
Axios 提交 Date 类型数据时的时区自动变更问题
问题描述
在使用 Axios
提交 Date 类型的数据时,发现请求体中的时间总是与代码中的时间不一致,这使我非常困惑。这个问题是在某次改项目中的 bug 时发现的,排查了很久。
根本原因
Axios
对于提交的 Date 类型的数据,会将其序列化为时间字符串。 这里涉及到 JavaScript
语言在序列化 Date 对象时的默认行为:
JavaScript
语言在序列化 Date 对象时(如通过 JSON.stringify
),会调用 Date.prototype.toISOString()
方法,将日期转换为 ISO 8601 格式(如 2025-05-04T01:00:00.000Z)。其中的 Z 表示 UTC 时间(0 时区),而本地时间(如东八区)会被自动转换为 UTC 时间(减去 8 小时)。如图:

为什么要这样做?JavaScript 语言这样做的合理性: Date 对象的 ISO 序列化是为了标准化时间表示,便于跨系统传输。UTC 时间是国际通用标准,因此 JavaScript 的行为是合理的。
解决方案
- 不要直接提交 Date 类型的数据,而是将 Date 对象转换为本地时间字符串,然后再提交。
- 后端进行时区处理
关于使用 CSS order 属性在不改变 dom 结构的情况下改变元素的显示顺序
是这样的,最近我在维护一个项目的时候遇到这样一个需求,页面上有一个元素,它的内部有两个子元素,它们的dom结构从上到下是 A -> B,现在我希望让 B 显示在父盒子的左侧, A 显示在右侧,并且 A 的宽度是父盒子的宽度减去B的宽度(也就是 A 要自适应剩余的宽度)
。
这种情况下使用 flex 布局 + order 属性 正好可以解决这个问题。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>Document</title>
<style>
.container {
display: flex;
width: 300px;
color: #fff;
}
.item1 {
order: 2;
flex: 1;
background-color: blue;
}
.item2 {
order: 1;
width: 50px;
background-color: red;
}
</style>
</head>
<body>
<div class="container">
<div class="item1">item1</div>
<div class="item2">item2</div>
</div>
</body>
</html>
