一、元件化語法糖
每個元件都是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...