v-model实现双向绑定

##v-model指令,可以在input和testarea元素上实现双向绑定.

大家都知道v-model可以实现双向绑定,但是否想过它的本质?

其实本质上的v-model不过是监听用户的input事件来更新数据,以及对一些情况做特殊管理.而数据的来源便是vue实例中的data.

 

##单行文本

html:
<div id="modelOne">
<input v-model="message" placeholder="编辑">
<p>message 是:{{ message }}</p>

js:
new Vue({
el:"#modelOne",
data:{
message:'';
}
})

即可实现简单的双向绑定

##多行文本 js文件与单行文本相似
html:
<span> 多行文本:</span>
<p style="white-space:pre-line;">{{message}}</p>
<br>
<textarea v-model="message" placeholder="add more line"></textarea>

 

 ##checkbox

html:
<div id='example-3'>
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>勾选的名字是:{{ checkedNames }}</span>
</div>

js:
new Vue({
el: '#example-3',
data: {
checkedNames: [] //当存在多个对象时,记得用数组
}
})
#radio js部分和check的相同

html:
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>选中的是:{{ picked }}</span>
#select
多选数组 js部分定义为数组

html部分:
<select v-model="selected" multiple>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<br>
<span>选中的是:{{ selected }}</span>
效果相似:v-for去渲染动态的option可以实现相同的效果

与value属性绑定

对于 radio, checkbox 和 select 的 option 选项,通常可以将 v-model 与值是静态字符串的 value 属性关联在一起
(或者,在 checkbox 中,绑定到布尔值):
<!-- 当选中时,`picked` 的值是字符串 "a"(译者注:如果没有 value 属性,选中时值是 null) -->
<input type="radio" v-model="picked" value="a">

<!-- `toggle` 的值是 true 或 false -->
<input type="checkbox" v-model="toggle">

<!-- 当选中第一个选项时,`selected` 的值是字符串 "abc"
(译者注:如果没有 value 属性,选中时 selected 值是 option 元素内的文本) -->
<select v-model="selected">
<option value="abc">ABC</option>
</select>


与value属性绑定


###checkbox

<input
 type="checkbox"
v-model="toggle"
true-value="yes"
false-value="no"
>
选中时:
vm.toggle === 'yes'
///没有选中时
vm.toggle === 'no'
 

修饰符(modifiers)

.lazy

默认情况下,v-model 会在每次 input 事件触发之后,将数据同步至 input 元素中(除了上述提到的输入法组合文字时不会)。可以添加 lazy 修饰符,从而转为在触发 change 事件后同步:

.number

如果想要将用户的输入,自动转换为 Number 类型(译注:如果转换结果为 NaN 则返回字符串类型的输入值),可以在 v-model 之后添加一个 number 修饰符,来处理输入值:

这通常很有用,因为即使是在 type="number" 时,HTML 中 input 元素也总是返回一个字符串类型的值。

.trim

如果想要将用户的输入,自动过滤掉首尾空格,可以在 v-model 之后添加一个 trim 修饰符,来处理输入值:








 


 

 

 

 

 

转载于:https://www.cnblogs.com/whh-16/p/9324104.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
v-model是Vue.js的一个核心功能,用于实现数据的双向绑定。通过v-model指令,我们可以将一个表单元素的值与Vue实例中的数据属性进行绑定,实现数据的自动同步更新。当表单元素的值发生变化时,Vue会自动更新数据属性的值;反过来,当数据属性的值发生变化时,表单元素的值也会自动更新。这种双向绑定的机制,大大简化了表单操作的代码编写,提高了开发效率。 在你提供的代码例子中,父组件通过v-model将tabType变量传递给子组件YwtgTabs,并实现双向绑定。通过props属性,子组件声明了一个名为type的属性,用于接收父组件传递过来的tabType变量。同时,在子组件中通过model属性,定义了一个名为changeType的事件,该事件用于触发更新type属性的值。当子组件中的selectTab方法被调用时,通过使用$emit方法触发changeType事件,并传递item.key作为参数,从而更新type属性的值。由于type属性与tabType变量通过双向绑定关联起来,当type属性的值改变时,tabType变量的值也会相应地更新。 综上所述,通过v-model指令可以实现表单数据的双向绑定,大大简化了表单操作的代码编写,提高了开发效率。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [vue自定v-model实现表单数据双向绑定问题](https://download.csdn.net/download/weixin_38575118/12953038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue的v-model实现双向绑定](https://blog.csdn.net/ta_huang/article/details/121953421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值