父組件中,在 methods、created 、mounted中都可以獲取到 this 以及其屬性 但在 data 中傳遞時(shí)只能獲取 this 實(shí)例而無(wú)法獲取 this.xxx 屬性。
父組件結(jié)構(gòu)代碼
<form-component :form="merchantAddForm"
:formItems="merchantAddFormItems"
@on-form-submit="handleFormSubmit"
@on-select-change="handleLevel1Change">
父組件方法代碼
data () {
return {
merchantAddForm: {
token: this.$route.params.token,
merType: 1,
merCertType: ''
},
sortList: [
{ value: 32, label: '商旅' },
{ value: 33, label: '商旅' },
{ value: 34, label: '商旅' }
],
merchantAddFormItems: [
{
label: '商戶一級(jí)分類',
prop: 'merLevel1No',
placeholder: '請(qǐng)選擇商戶一級(jí)分類',
type: 'select',
options: this.sortList,//這里只能傳遞 this 而無(wú)法獲取并傳遞 this 的任何屬性
rules: [{ required: true, message: '請(qǐng)選擇商戶一級(jí)分類', trigger: 'change' }]
}
]
}
}
子組件結(jié)構(gòu)代碼
<el-select v-else-if="item.type === 'select'"
v-model="form[item.prop]"
:placeholder="item.placeholder"
@change="handleSelectChange"
filterable>
<template v-for="(child, index) in item.options">
<!-- 這里獲取不到任何數(shù)據(jù),item.options 為 undefined -->
<el-option :key="index"
:label="child.label"
:value="child.value">
</el-option>
</template>
</el-select>
實(shí)際需求 sortList 為動(dòng)態(tài)賦值,上面的假數(shù)據(jù)只是為了模擬。
methods: {
getInitData () {
let findSortData = {
type: 0,
parentId: null
}
findSort(findSortData).then(res => {
if (res.data.object) {
let resArray = []
res.data.object.forEach(item => {
let obj = {
label: item.sortName,
value: item.sortCode
}
resArray.push(obj)
})
this.sortList = resArray
}
})
}
}
在子組件 created 以及 mounted 時(shí) console 出來(lái)的值都為 undefined
請(qǐng)教大佬解決思路以及 why?不勝感謝
原因簡(jiǎn)單的來(lái)說(shuō)就是,Vue會(huì)在某個(gè)周期里把data對(duì)象的各個(gè)屬性掛載在this(Vue實(shí)例)上。所以,在data函數(shù)創(chuàng)建過(guò)程中,無(wú)法通過(guò)this(Vue實(shí)例)訪問(wèn)data上的屬性,所以你的this上沒有sortList屬性。
具體修改辦法:
修改父組件的data函數(shù),參考偽代碼
data() {
const sortList = [xxx,xxx,xxx]
return {
sortList: sortList,
merchantAddFormItems: [
xxxxx,
options: sortList
]
}
}
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。