父子組件之間的雙向綁定非常簡單,但是很多人因為是從Vue 2+開始使用的,可能不知道如何雙向綁定,當然最簡單的雙向綁定(單文件中)就是表單元素的 v-model 了,例如 <input type="text" />
它會響應表單元素的 value 屬性,當輸入框文本改變時,會將 value 值傳給 v-model 所綁定的變量,如果同時設置 v-model 和 value , value 屬性無效。
父子組件的自定義雙向 v-model
當若干dom封裝成組件時,在父組件中使用子組件時,卻無法在子組件標簽上使用 v-model ,因為子組件標簽不是表單元素,這個時候,我們需要自定義我們想要的 v-model 規(guī)則。
<!-- children.vue --> <template> <h2>{{ msg }}</h2> </template> <script> export default{ model:{ prop:'msg',//這個字段,是指父組件設置 v-model 時,將變量值傳給子組件的 msg event:'parent-event'//這個字段,是指父組件監(jiān)聽 parent-event 事件 }, props:{ msg:String //此處必須定義和model的prop相同的props,因為v-model會傳值給子組件 }, mounted(){ //這里模擬異步將msg傳到父組件v-model,實現(xiàn)雙向控制 setTimeout(_=>{ let some = '3秒后出現(xiàn)的某個值';//子組件自己的某個值 this.$emit('praent-event',some); //將這個值通過 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); //三秒后控制臺會輸出 //'3秒后出現(xiàn)的某個值','test' } } } </script>
網(wǎng)站欄目:Vue父子組件雙向綁定傳值的實現(xiàn)方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article38/hsipp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、App設計、自適應網(wǎng)站、商城網(wǎng)站、全網(wǎng)營銷推廣、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容