v-model 表示双向数据绑定
JS变量变换=>页面 (响应式数据劫持操作)
页面元素的数据操作=>JS变量变换 (事件绑定对变量修改的操作)
v-model 只支持基本仓库变量,不支持除此之外的任何其他取值
因此能够使用v-model指令的只有表单元素中的数据控制元素
input type=text,password,number,……
textarea
select
input type=radio
input type=checkbox
所以 v-model 实际上就是vue提供的 v-bind + v-on 同时绑定的语法糖指令
==单行文本框||类似于单行文本框的H5输入变量==
v-model:
1. 完成了对于value属性绑定,默认完成input事件的绑定
2. 同时实现 事件触发时当前元素新值到绑定变量的赋值操作
注:H5输入标签在完成v-model绑定时,根据数据标签的取值类型,需要提供有效变量值
- data(){
- return {
- msg:"msg", // <input type="text" v-model="msg">
- color:"#8264d3", // <input type="color" v-model="color">
- date:"2022-01-23", //<input type="date" v-model="date">
- num:"1" // <input type="range" v-model="num" min="1" max="5" step="0.5">
- }
- }
多行文本域||下拉列表==
v-model:
1. 完成了对于DOM的value属性绑定,默认完成input事件||change事件的绑定
2. 同时实现 事件触发时当前元素新值到绑定变量的赋值操作
v-model 对下拉列表的绑定只能添加在select标签上
select标签的DOM属性value取值会根据数据和内部option的对应值进行等值比较, 确定绑定的option元素
option的对应值:当定义了value 对应值为value;当没定义value对应值为option内容
vue中select启用 multiple 属性时,v-model绑定的变量必须取值 Array||Set
- <pre>{{ infos }}</pre>
- <!-- vue中select启用 multiple 属性时,v-model绑定的变量必须取值 Array||Set -->
- <select v-model="infos" multiple style="width: 100px;">
- <option value="html">html</option>
- <option value="css">css</option>
- <option value="js">js</option>
- <option value="vue">vue</option>
- </select>
-
- <script type="module">
- import { createApp } from "../assets/vue/3.0/vue.esm-browser.js";
- createApp({
- data(){
- return {
- infos:[]
- }
- }
- }).mount("#app")
- "app">
- <p>radioData:{{ radioData }}p>
-
-
-
- :checked=" radioData=='电信' "
- @change=" radioData=$event.target.value "
- >电信
-
- :checked=" radioData=='移动' "
- @change=" radioData=$event.target.value "
- >移动
-
- :checked=" radioData=='联通' "
- @change=" radioData=$event.target.value "
- >联通
-
- :checked=" radioData=='广电' "
- @change=" radioData=$event.target.value "
- >广电
-
-
- 电信
- 移动
- 联通
- 广电
-
- 电信
- 移动
- 联通
- 广电
-
-
-
-
- :value=" v "
- v-model="radioData"
- >{{ v }}
-
-
-
- import { createApp } from "../assets/vue/3.0/vue.esm-browser.js";
- createApp({
- data(){
- return {
- radioValue:["电信","移动","联通","广电"],
- radioData:"联通"
- }
- }
- }).mount("#app")
-
- "app">
- <p>checkFlag:{{ checkFlag }}p>
-
-
-
checkFlag1:{{ checkFlag1 }}
-
-
-
checkData:{{ checkData }}
- 技能:
- html
- css
- js
- vue
-
-
- {{ v }}
-
-
-
- import { createApp } from "../assets/vue/3.0/vue.esm-browser.js";
- createApp({
- data(){
- return {
- checkFlag:true,
- checkFlag1:"是",
- checkData:[],
- // checkData:new Set([]),
- skills:["html","js","css","vue"]
- }
- }
- }).mount("#app")
-
- "app">
- <h4>单选按钮:value取值引用数据变量时h4>
-
-
- radioData:{{ radioData }}
-
-
-
-
-
- {{ v.name }}【{{ v }}】
-
-
-
复选按钮:value取值引用数据变量时(数据模式)
-
-
checkData:{{ checkData }}
-
-
- {{ v.name }}【{{ v }}】
-
-
-
-
复选按钮动态元素构成和数据模式绑定
-
{{ checkData2 }}
-
-
-
-
- {{ v.name }}【{{ v }}】
-
-
-
-
-
- {{ v.name }}【{{ v }}】
-
-
-
-
- import { createApp } from "../assets/vue/3.0/vue.esm-browser.js";
- createApp({
- data() {
- return {
- radioData:{},
- // radioValue: [
- // { name: "电信" },
- // { name: "移动" },
- // { name: "联通" },
- // { name: "广电" },
- // { name: "广电" }
- // ],
- radioValue: [
- { id:111,name: "电信" },
- { id:222,name: "移动" },
- { id:333,name: "联通" },
- { id:444,name: "广电" },
- { id:555,name: "广电" }
- ],
- checkData:[],
- skills:[
- {id:111,name:"html"},
- {id:222,name:"js"},
- {id:333,name:"css"},
- {id:444,name:"vue"},
- {id:555,name:"vue"}
- ],
- checkData2:[
- {id:111,name:"html"},
- {id:333,name:"css"},
- ],
- skills2:[
- {id:111,name:"html"},
- {id:222,name:"js"},
- {id:333,name:"css"},
- {id:444,name:"vue"}
- ],
- skills3:[
- {id:111,name:"html",check:false},
- {id:222,name:"js",check:true},
- {id:333,name:"css",check:true},
- {id:444,name:"vue",check:false}
- ]
- }
- }
- }).mount("#app")
-
==> 尝试完成v-model接收的string数据到number数据的转换
==> 如果不能转换 以 string 原值绑定给变量
==> 该修饰符使用的是 Number.parseFloat 方法完成数据转换
- "app">
- <p>v-model数据懒渲染lazyp>
- <p>msg:{{ msg }}p>
-
-
-
-
-
v-model数值类型数据自动转换number
-
num+num1:{{ num+num1 }}
-
-
-
-
-
v-model首尾空格删除trim
-
|{{ info }}|
-
-
-
-
-
-
-
- import { createApp } from "../assets/vue/3.0/vue.esm-browser.js";
- createApp({
- data(){
- return {
- msg:"msg",
- num:10,
- num1:10,
- info:"=="
- }
- }
- }).mount("#app")
-