vue 2.0組件與v-model詳解
前言
大家可能乍一看這個(gè)標(biāo)題,可能會(huì)有疑問:v-model和組件也能扯到一起?在打算寫這篇文章的時(shí)候,也是這么想的。咱們按簡(jiǎn)歷的那一套STAR法則來梳理一下這篇文章:
情景【Situation】:
編寫通用的輸入組件時(shí),子組件要綁定到父組件的某個(gè)變量上dataA,當(dāng)父組件要拿到自組件的值時(shí)不能通過this.$children.xxx取值然后付給dataA,
而是父組件可以直接this.dataA就可以取到當(dāng)前子組件最新值。
任務(wù)【Task】:
實(shí)現(xiàn)在父組件直接this.dataA就可以取到當(dāng)前子組件最新值。
行動(dòng)【Action】:
首先要了解v-model這個(gè)指令,許多認(rèn)真閱讀過完整vue文檔的同學(xué)可能已經(jīng)知道了關(guān)于v-model。
v-model官方給出的說發(fā)是:這其實(shí)是一個(gè)簡(jiǎn)寫的形式,v-model實(shí)際執(zhí)行的是下面的綁定:
<input type="text" v-bind:value="dataA" v-on:input="dataA = $event.target.value" />
v-model是動(dòng)態(tài)綁定值到value,然后監(jiān)聽input的inpit事件獲取值后賦給dataA的一個(gè)過程。
在說一下input的value屬性,在組件內(nèi)部要定義一個(gè)value的props屬性,以便能夠動(dòng)態(tài)綁定上父組件傳過來的值;
組件內(nèi)部還要做一件事情:
動(dòng)態(tài)計(jì)算(獲取和設(shè)置)currentValue的值,用到了vue的對(duì)象的get和set函數(shù);
講到這里,我們就可以解決上面的問題了;
首先定義一個(gè)通用輸入組件:
Vue.component('my-component',{
template:'<div><input type="text" type="text" v-model="currentValue"/></div>',
data:function(){
return {
// 雙向綁定值-必須
currentValue:this.value
}
},
props:['value'],// 設(shè)置value為props屬性-必須
computed:{
currentValue: {
// 動(dòng)態(tài)計(jì)算currentValue的值
get:function() {
return this.value;
},
set:function(val) {
this.$emit('input', val);
}
}
}
})
在Html里綁定到vue實(shí)例的一個(gè)字段上;
<div id="demo_01"> <my-component v-for="(val,key) in postData" v-model="postData[key]"></my-component> <button @click="showValue">打印對(duì)象值</button> </div>
實(shí)例里寫一個(gè)方法
打印一下我們綁定的值;
var demo_01 = new Vue({
el:'#demo_01',
data:{
postData:{
name:'李雷',
age:'80',
describ:'這是一個(gè)傳奇的人物'
}
},
methods:{
showValue:function(){
console.log(this.postData)
}
}
});
是不是以后就不用繁瑣冗長的this.$children.xxx取值方式了?
結(jié)果【Result】:
提供了有效的解決了關(guān)于輸入類組件取值方案,并且已經(jīng)部署實(shí)施。
總結(jié)
以上就是關(guān)于vue2.0 組件和v-model的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的幫助。
- 在Vue2中v-model和.sync區(qū)別解析
- vue2和vue3組件v-model區(qū)別詳析
- Vue2子組件綁定 v-model,實(shí)現(xiàn)父子組件通信方式
- vue2中如何自定義組件的v-model
- Vue v-model相關(guān)知識(shí)總結(jié)
- vue2 v-model/v-text 中使用過濾器的方法示例
- Vue2.0利用 v-model 實(shí)現(xiàn)組件props雙向綁定的優(yōu)美解決方案
- vue2 如何實(shí)現(xiàn)div contenteditable=“true”(類似于v-model)的效果
- vue2與vue3雙向數(shù)據(jù)綁定的區(qū)別說明
- vue 2 實(shí)現(xiàn)自定義組件一到多個(gè)v-model雙向數(shù)據(jù)綁定的方法(最新推薦)
相關(guān)文章
詳解VUE自定義組件中用.sync修飾符與v-model的區(qū)別
這篇文章主要介紹了詳解VUE自定義組件中用.sync修飾符與v-model的區(qū)別,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Vue2.0中三種常用傳值方式(父?jìng)髯?、子傳父、非父子組件傳值)
在Vue的框架開發(fā)的項(xiàng)目過程中,經(jīng)常會(huì)用到組件來管理不同的功能,有一些公共的組件會(huì)被提取出來。下面通過本文給大家介紹Vue開發(fā)中常用的三種傳值方式父?jìng)髯?、子傳父、非父子組件傳值,需要的朋友參考下吧2018-08-08
一文詳解如何在vue中實(shí)現(xiàn)文件預(yù)覽功能
很多Vue項(xiàng)目中都需要PDF文件預(yù)覽功能,比如合同ERP,銷售CRM,內(nèi)部文檔CMS管理系統(tǒng),內(nèi)置PDF文件在線預(yù)覽功能,下面這篇文章主要給大家介紹了關(guān)于如何在vue中實(shí)現(xiàn)文件預(yù)覽功能的相關(guān)資料,需要的朋友可以參考下2022-10-10
詳解element-ui表格的合并行和列(非常細(xì)節(jié))
最近在需求中遇到了elementUI合并行,索性給大家整理下,這篇文章主要給大家介紹了關(guān)于element-ui表格的合并行和列的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法
本文主要介紹了Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
淺析Vue2和Vue3中雙向綁定機(jī)制的優(yōu)化與差異
Vue.js?核心特性之一就是雙向綁定,本文將深入探討?Vue2?和?Vue3?在雙向綁定上的區(qū)別,并分析這些改進(jìn)對(duì)性能和開發(fā)體驗(yàn)的影響,希望對(duì)大家有所幫助2024-11-11
解決vue-cli webpack打包開啟Gzip 報(bào)錯(cuò)問題
這篇文章主要介紹了vue-cli webpack打包開啟Gzip 報(bào)錯(cuò)問題的解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
vue2+elementui上傳照片方式(el-upload超簡(jiǎn)單)
這篇文章主要介紹了vue2+elementui上傳照片方式(el-upload超簡(jiǎn)單),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03

