vue組件之自定義v-model (子組件觸發(fā)父組件圖書分頁(yè))

這一節(jié)我們使用自定義的v-model實(shí)現(xiàn) 子組件觸發(fā)父組件更新
首先我們復(fù)習(xí)下v-model
在booklist.vue文件里加入測(cè)試代碼


image.png

使v-model的值為當(dāng)前頁(yè)碼值進(jìn)行雙向綁定
這時(shí)我在輸入框中改變頁(yè)碼值 想應(yīng)的數(shù)據(jù)也會(huì)跟著變化
效果如下


image.png

我在輸入框中輸入3
表示第三頁(yè)
image.png

是因?yàn)槲覀兏淖兞水?dāng)前頁(yè)碼值currentPage(是vue實(shí)例對(duì)象中data里面的數(shù)據(jù))改變data里面數(shù)據(jù) 會(huì)觸發(fā)組件的重新渲染

實(shí)際上v-model是v-bind:value 和 v-on:input 事件的語(yǔ)法糖
我們可以寫成下面的方式


image.png

v-model里面默認(rèn)綁定的是value值和input事件
效果和上面一模一樣
下面我們看下如何用自定義v-model實(shí)現(xiàn)子組件觸發(fā)父組件更新
首先在父組件里面的pagebar組件上 寫入v-model屬性 把currentPage傳入子組件
代碼如下
image.png

那么子組件如何獲取呢?
在父組件里面的子組件pagabar上面寫入v-model會(huì)自動(dòng)將value值和input事件傳入子組件
只需在子組件的props屬性里面加入value值即可
然后還是用emit方法觸發(fā)父組件更新 只不過(guò)事件名 為v-model的input
如下
image.png

image.png

運(yùn)行結(jié)果


image.png

點(diǎn)擊圖書進(jìn)行分頁(yè)了 并且頁(yè)碼值出現(xiàn)在下面的輸入框內(nèi)
以上就是在組件里面使用v-model實(shí)現(xiàn)子組件觸發(fā)父組件更新方法 原理和原生組件是一樣的
但是上面的代碼有些別扭 比如說(shuō)v-model默認(rèn)傳入給子組件的value值和input事件名
我們還可以改寫這兩個(gè)名字 讓我們自定義名字
在vue2.2版本后提出的
寫法如下
增加一個(gè)model屬性在里面加入prop和event分別 表示替代value和input事件的名字
image.png

這樣看起來(lái)我們的代碼看起來(lái)不別扭
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • vue概述 在官方文檔中,有一句話對(duì)Vue的定位說(shuō)的很明確:Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語(yǔ)法來(lái)聲明...
    li4065閱讀 7,618評(píng)論 0 25
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,177評(píng)論 0 29
  • 主要還是自己看的,所有內(nèi)容來(lái)自官方文檔。 介紹 Vue.js 是什么 Vue (讀音 /vju?/,類似于 vie...
    Leonzai閱讀 3,538評(píng)論 0 25
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 簡(jiǎn)單小巧、漸進(jìn)式、功能強(qiáng)大的技術(shù)棧 1.1.2 為什么學(xué)習(xí)...
    蔡華鵬閱讀 3,495評(píng)論 0 3
  • 組件(Component)是Vue.js最核心的功能,也是整個(gè)架構(gòu)設(shè)計(jì)最精彩的地方,當(dāng)然也是最難掌握的。...
    六個(gè)周閱讀 5,762評(píng)論 0 32

友情鏈接更多精彩內(nèi)容