欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Vue父子組件雙向綁定傳值的實(shí)現(xiàn)方法

父子組件之間的雙向綁定非常簡單,但是很多人因?yàn)槭菑腣ue 2+開始使用的,可能不知道如何雙向綁定,當(dāng)然最簡單的雙向綁定(單文件中)就是表單元素的 v-model 了,例如 <input type="text" /> 它會(huì)響應(yīng)表單元素的 value 屬性,當(dāng)輸入框文本改變時(shí),會(huì)將 value 值傳給 v-model 所綁定的變量,如果同時(shí)設(shè)置 v-model 和 value , value 屬性無效。

公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出長清免費(fèi)做網(wǎng)站回饋大家。

父子組件的自定義雙向 v-model

當(dāng)若干dom封裝成組件時(shí),在父組件中使用子組件時(shí),卻無法在子組件標(biāo)簽上使用 v-model ,因?yàn)樽咏M件標(biāo)簽不是表單元素,這個(gè)時(shí)候,我們需要自定義我們想要的 v-model 規(guī)則。

<!-- children.vue -->
<template>
 <h2>{{ msg }}</h2>
</template>
<script>

export default{
 model:{
  prop:'msg',//這個(gè)字段,是指父組件設(shè)置 v-model 時(shí),將變量值傳給子組件的 msg
  event:'parent-event'//這個(gè)字段,是指父組件監(jiān)聽 parent-event 事件
 },
 props:{
  msg:String //此處必須定義和model的prop相同的props,因?yàn)関-model會(huì)傳值給子組件
 },
 mounted(){
 //這里模擬異步將msg傳到父組件v-model,實(shí)現(xiàn)雙向控制
  setTimeout(_=>{
   let some = '3秒后出現(xiàn)的某個(gè)值';//子組件自己的某個(gè)值
   this.$emit('praent-event',some);
   //將這個(gè)值通過 emit 觸發(fā)parent-event,將some傳遞給父組件的v-model綁定的變量
  },3000);
 }
}
</script>

<!-- parent.vue -->
<template>
 <children v-model="parentMsg"></children>
</template>
<script>
import children from 'path/to/children.vue';
export default{
 components:{
  children
 },
 data(){
  return{
   parentMsg:'test'
  }
 },
 watch:{
  parentMsg(newV,oldV){
   console.log(newV,oldV);
   //三秒后控制臺(tái)會(huì)輸出
   //'3秒后出現(xiàn)的某個(gè)值','test'
  }
 }
}
</script>

你學(xué)會(huì)組件的自定義 v-model 了嗎 ? 如果是普通的表單元素,同理,監(jiān)聽表單的 input 或者 change 事件,實(shí)時(shí)將 value 或者 checked 通過 $emit 傳遞就可以了。

父子組件的自定義多個(gè)雙向值

上述例子,是實(shí)現(xiàn)單個(gè)prop值的雙向綁定,當(dāng)組件的需求需要復(fù)雜的操作,需要多個(gè)雙向值,是如何實(shí)現(xiàn)的呢。這里需要用到以前被vue拋棄,后來又回歸的 .sync 修飾符。

事實(shí)上,這個(gè)比 v-model 更加簡單

<!-- children.vue -->
<template>
 <h2>{{ msg }}</h2>
</template>
<script>

export default{
 props:{
  msg:String
 },
 mounted(){
 //這里模擬異步將msg傳到父組件v-model,實(shí)現(xiàn)雙向控制
  setTimeout(_=>{
   let some = '3秒后出現(xiàn)的某個(gè)值';//子組件自己的某個(gè)值
   this.$emit('update:msg',some);
   //將這個(gè)值通過 emit
   //update為固定字段,通過冒號(hào)連接雙向綁定的msg,將some傳遞給父組件的v-model綁定的變量
  },3000);
 }
}
</script>

<!-- parent.vue -->
<template>
 <children :msg.sync="parentMsg"></children>
 <!-- 此處只需在平時(shí)常用的單向傳值上加上.sync修飾符 -->
</template>
<script>
import children from 'path/to/children.vue';
export default{
 components:{
  children
 },
 data(){
  return{
   parentMsg:'test'
  }
 },
 watch:{
  parentMsg(newV,oldV){
   console.log(newV,oldV);
   //三秒后控制臺(tái)會(huì)輸出
   //'3秒后出現(xiàn)的某個(gè)值','test'
  }
 }
}
</script>

此處需要注意,雖然加上 .sync 即可雙向綁定,但是還是要依靠子組件 $emit 去觸發(fā) update:prop名 實(shí)現(xiàn)修改父組件的變量值實(shí)現(xiàn)雙向數(shù)據(jù)流,如果直接對(duì)prop的屬性直接賦值,依然會(huì)出現(xiàn)報(bào)錯(cuò)。

事實(shí)上, .sync 修飾符是一個(gè)簡寫,它做了一件事情

<template>
 <children :msg.sync="parentMsg"></children>
 <!-- 等價(jià)于 -->
 <children :msg="parentMsg" @updata:msg="parentMsg = $event"></children>
 <!-- 這里的$event就是子組件$emit傳遞的參數(shù) -->
</template>

當(dāng)需要把一個(gè)對(duì)象中的屬性全部通過 .sync 傳入雙向數(shù)據(jù)流時(shí),可以再簡便一下寫法

<template>
 <children :.sync="obj"></children>
</template>
<script>
export default{
 components:{
  children
 },
 data(){
  return{
   obj:{
    parentMsg:'test'
   }
  }
 }
}
</script>

當(dāng)使用這種寫法時(shí),會(huì)將obj對(duì)象中的所有屬性都通過獨(dú)立的props傳遞給子組件,并監(jiān)聽對(duì)應(yīng)的 update: ,此時(shí)在子組件中也要聲明對(duì)應(yīng)的props。

總結(jié)

以上所述是小編給大家介紹的Vue父子組件雙向綁定傳值的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!

本文標(biāo)題:Vue父子組件雙向綁定傳值的實(shí)現(xiàn)方法
文章轉(zhuǎn)載:http://www.aaarwkj.com/article12/pccigc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、建站公司、域名注冊(cè)網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
午夜精品人妻一区二区| 无套内射精品一区二区| 欧美国产日韩一区在线观看| 精品国产一区亚洲二区| 精品啪啪高潮一区二区| 欧美精品在线观看不卡一区| 正在播放蜜臀av在线| 青青草原高清在线观看 | 日韩人妻精品久久免费| 精品一区二区三区毛卡片| 一本久久精品午夜福利| 男人天堂av一区二区| 欧美夫妻成人性生活视频| 日韩欧美一区二区三区在线| 亚洲精品啪啪一区二区| 日韩欧美中文字幕在线等| 91日本视频在线播放| 插美女逼免费视频导航| 91亚洲精品国产一区| 日韩不卡一区二区在线观看| 午夜欧美日韩精品久久久| 亚洲一区二区三区熟女av| 国产美女高潮流白浆视频免费看 | av一区二区三区不卡在线看| 亚洲欧美一区二区国产| 免费精品黑人一区二区三区| 日韩av在线观看大全| 国产成十人十综合十亚洲| 亚洲av二区三区成人| 国产亚洲中文字幕91| 伊人性伊人情亚洲综合| 国产av日韩精品一区二区三区| 久久亚洲中文字幕精品熟女一区| 色哟哟网站在线精品视频| 久久精品国产精品亚洲片| 亚洲国产欧美日韩久久| 国产传媒网站在线观看| 午夜精品一区二区三区久久| 少妇高潮在线观看免费| 日韩不卡的一区免费视频| 白白在线观看网站看看亚洲|