




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Vue.js教程(十)--組件間的數(shù)據(jù)傳遞
Vue.js教程〔十〕--組件間的數(shù)據(jù)傳遞
1.父子組件
在一個(gè)組件內(nèi)部定義另一個(gè)組件,稱為父子組件。子組件只能在父組件中使用。
默認(rèn)情況下,子組件無法訪問父組件中的數(shù)據(jù),每個(gè)組件實(shí)例的作用域是獨(dú)立的
2.組件間數(shù)據(jù)傳遞〔通信〕
(1)子組件訪問父組件中的數(shù)據(jù)
a〕在調(diào)用子組件時(shí),綁定想要獲取的父組件的數(shù)據(jù)
b〕在子組件內(nèi)部,使用props選項(xiàng)聲明獲取的數(shù)據(jù),即接收來自父組件的數(shù)據(jù)。注:組件中的數(shù)據(jù)共有三種形式,data、props、computed
例如:
必須有且只有一個(gè)根元素-->
我是hello父組件
訪問自己的數(shù)據(jù):{{msg}}、{{name}}、{{age}}、{{user.id}}
我是world子組件
訪問父組件中的數(shù)據(jù):{{message}},{{age}}、{{user.username}}
mui.init()
varvm=newVue({//根組件
el:"#content",
components:{
'my_hello':{//父組件
template:"#hello",
data(){
return{
msg:'hello',
name:'jack',
age:23,
user:{
id:2022311951,
username:'yxc'
}
}
},
components:{
'my_world':{//子組件
template:'#world',
props:['message','age','user']//接收父組件傳過來的數(shù)據(jù)
}
}
}
}
})
props
props可以是數(shù)組或?qū)ο?,用于接收來自父組件的數(shù)據(jù)。props可以是簡單的數(shù)組,或者使用對象作為替代,對象允許配置高級選項(xiàng),如類型檢測、自定義驗(yàn)證和設(shè)置默認(rèn)值。
你可以基于對象的語法使用下列選項(xiàng):
type:可以是以下原生構(gòu)造函數(shù)中的一種:String、Number、Boolean、Array、Object、Date、Function、Symbol、任何自定義構(gòu)造函數(shù)、或上述內(nèi)容組成的數(shù)組。會檢查一個(gè)prop是否是給定的類型,否那么拋出警告。Prop類型的更多信息在此。
default:any為該prop指定一個(gè)默認(rèn)值。如果該prop沒有被傳入,那么換做用這個(gè)值。對象或數(shù)組的默認(rèn)值必須從一個(gè)工廠函數(shù)返回。
required:Boolean定義該prop是否是必填項(xiàng)。在非生產(chǎn)環(huán)境中,如果這個(gè)值為truthy且該+prop沒有被傳入的,那么一個(gè)控制臺警告將會被拋出。
validator:Function自定義驗(yàn)證函數(shù)會將該prop的值作為唯一的參數(shù)代入。在非生產(chǎn)環(huán)境下,如果該函數(shù)返回一個(gè)falsy的值(也就是驗(yàn)證失敗),一個(gè)控制臺警告將會被拋出。你可以在這里查閱更多prop驗(yàn)證的相關(guān)信息。例如:
//簡單語法
Vueponent('props-demo-simple',{
props:['size','myMessage']
})
//對象語法,提供驗(yàn)證
Vueponent('props-demo-advanced',{
props:{
//檢測類型
height:Number,
//檢測類型+其他驗(yàn)證
age:{
type:Number,
default:0,
required:true,
validator:function(value){
returnvalue>=0
}
}
}
})
例如:
必須有且只有一個(gè)根元素-->
我是hello父組件
訪問自己的數(shù)據(jù):{{msg}}、{{name}}、{{age}}、{{user.id}}
我是world子組件
訪問父組件中的數(shù)據(jù):{{message}},{{age}},{{name}},{{user.username}}
mui.init()
varvm=newVue({//根組件
el:"#content",
components:{
'my_hello':{//父組件
template:"#hello",
data(){
return{
msg:'hello',
name:'jack',
age:23,
user:{
id:2022311951,
username:'yxc'
}
}
},
components:{
'my_world':{//子組件
template:'#world',
//props:['message','age','user']//接收父組件傳過來的數(shù)據(jù)
props:{//也可以是對象,允許配置高級設(shè)置,如類型判斷,數(shù)據(jù)校驗(yàn),設(shè)置默認(rèn)值
message:String,
age:{
type:Number,
default:18,
validator:function(value){
returnvalue>=0;
}
},
name:{
type:String,
required:true,
},
user:{
type:Object,
default:function(){//對象或數(shù)組的默認(rèn)值必須使用函數(shù)的屬性來返回
return{id:2022311950,username:'jack'};
}
}
}
}
}
}
}
})
總結(jié):父組件通過props向下傳遞數(shù)據(jù)給子組件
〔2〕父組件訪問子組件中的數(shù)據(jù)
a〕在子組件中使用vm.$emit(事件名,數(shù)據(jù))出發(fā)一個(gè)自定義事件,事件名自定義
b〕父組件在使用子組件的地方監(jiān)聽子組件觸發(fā)的事件,并在父組件中定義辦法,用來獲取數(shù)據(jù)
例如:
必須有且只有一個(gè)根元素-->
我是hello父組件
訪問自己的數(shù)據(jù):{{msg}}、{{name}}、{{age}}、{{user.id}}
訪問子組件中的數(shù)據(jù):{{h_sex}},{{h_height}}
我是world子組件
訪問父組件中的數(shù)據(jù):{{message}},{{age}},{{name}},{{user.username}}
將子組件中的數(shù)據(jù)向上發(fā)送到父組件
mui.init()
varvm=newVue({//根組件
el:"#content",
components:{
'my_hello':{//父組件
template:"#hello",
methods:{
getData(sex,height){
console.log(sex);
console.log(height);
this.h_sex=sex;
this.h_height=height;
}
},
data(){
return{
msg:'hello',
name:'jack',
age:23,
user:{
id:2022311951,
username:'yxc'
},
h_sex:'',
h_height:''
}
},
components:{
'my_world':{//子組件
data(){
return{
sex:'male',
height:100
}
},
template:'#world',
//props:['message','age','user']//接收父組件傳過來的數(shù)據(jù)
props:{//也可以是對象,允許配置高級設(shè)置,如類型判斷,數(shù)據(jù)校驗(yàn),設(shè)置默認(rèn)值
message:String,
age:{
type:Number,
default:18,
validator:function(value){
returnvalue>=0;
}
},
name:{
type:String,
required:true,
},
user:{
type:Object,
default:function(){//對象或數(shù)組的默認(rèn)值必須使用函數(shù)的屬性來返回
return{
id:2022311950,
username:'jack'
};
}
}
},
met
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZRCMA 001-2024 城市軌道交通智慧實(shí)訓(xùn)系統(tǒng)技術(shù)規(guī)范
- 二零二五年度餐飲店面租賃合同含節(jié)假日促銷活動(dòng)
- 二零二五年度個(gè)人擔(dān)保合同-個(gè)人理財(cái)產(chǎn)品擔(dān)保服務(wù)條款
- 二零二五年度農(nóng)村墓地選購與祭祀活動(dòng)組織合同
- 二零二五年度茶飲品牌全國使用許可合同
- 二零二五年度互聯(lián)網(wǎng)保險(xiǎn)產(chǎn)品銷售委托理財(cái)服務(wù)協(xié)議
- 二零二五年度棋牌室合作伙伴關(guān)系管理與維護(hù)合同
- 2025年度順豐員工勞動(dòng)合同爭議解決機(jī)制合同
- 二零二五年度個(gè)人合同范本:智能家居控制系統(tǒng)研發(fā)合作合同
- 二零二五年度新型工業(yè)園區(qū)委托中介代理出租服務(wù)協(xié)議
- 2025年高考百日誓師大會校長致辭(二)
- 2025年河南機(jī)電職業(yè)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 2025年黑龍江能源職業(yè)學(xué)院單招職業(yè)傾向性測試題庫完整
- 學(xué)校垃圾處理運(yùn)輸服務(wù)合同
- 廣西2025年01月南寧市良慶區(qū)公開考試招考專職化城市社區(qū)工作者筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 注塑產(chǎn)品生產(chǎn)流程
- 統(tǒng)編版(2025)七年級下冊道德與法治教學(xué)計(jì)劃
- 七年級數(shù)學(xué)下冊 第11章 單元測試卷(蘇科版 2025年春)
- 2024年天津市建筑安全員A證考試題庫及答案
- 《人力資源管理》全套教學(xué)課件
- 空白房屋裝修合同范本
評論
0/150
提交評論