VUE 父子間通訊 雙向繫結 筆記

2021-10-09 01:29:10 字數 2218 閱讀 6408

一、元件化語法糖

每個元件都是vue例項的子元件,這裡為簡化**,直接將vue例項作為父元件

父子分開寫:父:

, components:

})

子:
const cpn =

, components:

,

第二步要在標籤裡進行繫結:

"num1"

:number2=

"num2"

>

五、將number顯示在網頁上

這時需要在標籤模板裡面寫上html:

="cpn"

>

}<

/h2>

}<

/h2>

<

/div>

<

/template>就可以在網頁中看到

六、希望乙個輸入框和number進行雙向繫結

1、注意這裡不建議將input和number1直接進行雙向繫結,因為number1是在props裡面,props裡面的資料來自父元件,雙向繫結會報錯,所以先用data(注意子元件裡的data要用函式返回值形式)獲取props裡面的number:

props:

,data()}

,

再進行雙向繫結:

="cpn"

>

}<

/h2>

}<

/h2>

<

input

type

="text" v-model=

"dnumber1"

>

}<

/h2>

}<

/h2>

<

input

type

="text" v-model=

"dnumber2"

>

<

/div>

<

/template>所以到這裡,實現了dnumber和input的雙向繫結:

num—>number---->dnumber《—》input,還沒有實現number和input的雙向繫結,現在這裡只要dnumber的改變值傳遞給num就可以構成乙個閉環,所以需要子傳父

七、子傳父,將dnumber的值傳遞給num

這裡選擇用watch方法監測dnumber值的改變:

data()}

,watch:

, dnumber2(newvalue)

}

再為cpn標籤繫結num1change事件:

"num1"

:number2=

"num2"

@num1change=

"num1change" @num2change=

"num2change"

>

<

/cpn>

然後需要在父元件裡加上對應的事件:

methods:

, num2change(dnumber2)

}

這裡需要將傳遞過來的引數dnumber資料型別轉換成number型,不然會報錯,因為前面子元件裡面props方法中就指定了number1的型別為number。

現在就實現了number和input的雙向繫結:

七、加一條:希望number1一直是number2的100倍

在input中輸入資料時,另乙個input按照對應關係一起發生變化

只需要在watch中進行計算,再通過子傳父將另乙個事件也調動出來:

watch:

, dnumber2(newvalue)

}

現在改變乙個輸入框,其他的資料都在變化:

Vue 父子元件雙向資料繫結

產生原因 父組建向子組建傳值是通過props傳遞值,由於props是單向資料流,所以子組建需要向父組建更新資料時無法傳遞,此時,這時候就需要用到如下方法 父組建 正常傳遞資料 data myinput sync傳遞資料 data myinput 子組建 子組建正常使用props引入資料 props ...

深入解析Vue父子元件通訊 雙向資料繫結問題

學習了一天的vue元件化開發,腦瓜子嗡嗡的。遇事不要慌,先去吃個快餐。吃飽才有力氣扯淡,程式設計師還是應該以身體為重。鄙人健身三年,有喜歡運動的小夥伴歡迎私聊深入交流一下。1.子元件可以獲取父元件的data資料 2.子元件中的輸入框可以修改獲取到的data資料 3.子元件在修改獲取到的資料同時反過來...

實踐筆記 vue父子元件資料雙向繫結

背景 vue設計中props為單向資料流,即props資料在父元件進行修改,並流向子元件。而在子元件裡只能對props資料進行讀取,不能進行修改,否則會觸發報錯。為了達到在子元件裡修改props值的要求,需要通過以下2步來實現 1.父元件使用子元件時給prop值 value 新增.sync修飾符 2...