事件怎么写,v-model 在各控件里到底存了什么

上面三块讲「事件」:三种写法、冒泡与捕获、.prevent / .once / 键盘;下面四块讲「v-model」:每类控件实测存的是什么类型,再踩三个高频坑。 每个按钮只做一件事,点完结论打进最下面的迷你控制台。

速查表

事件修饰符作用
.stop / .prevent停止冒泡(stopPropagation)/阻止默认行为(表单提交、链接跳转)
.capture / .self改到捕获阶段触发(先于子元素)/只有 event.target 是元素自己时才触发
.once / .passive / .exact.once 只触发一次后摘掉监听器;.passive 声明不会 preventDefault(不能再配 .prevent);.exact 要求不带其它修饰键
键盘.enter .esc .tab .space .up/.down/.left/.right;推荐写在 @keyup 上(keydown 时常读到旧值)
顺序.prevent.stop 与 .stop.prevent 语义不同;.self/.exact 只影响「自己」这一层
控件v-model 里存的是
input[text] / textarea字符串(空着是 "",不是 null)
input[radio] / select选中项的 value;绑 :value 才存得下数字、对象
input[checkbox] 单个 / 带 value单个是布尔 true / false;一旦写了 value 就变成数组
select[multiple]数组
.number能转数字就存数字,转不了保留原字符串(清空时是 "")
.trim / .lazy.trim 在 change 时去首尾空格;.lazy 把同步时机换成 change(失焦/回车)
[迷你控制台] Vue 开发版的警告会同时显示在这里和浏览器控制台