鍍金池/ 問(wèn)答/HTML/ 關(guān)于vue父組件動(dòng)態(tài)傳參給子組件的問(wèn)題

關(guān)于vue父組件動(dòng)態(tài)傳參給子組件的問(wèn)題

問(wèn)題是這樣的,我在父組件里有個(gè)選擇下拉框,默認(rèn)選擇第一個(gè),每選擇不一樣的時(shí)候就要?jiǎng)討B(tài)更新子組件。
我可以在子組件里通過(guò)watch來(lái)動(dòng)態(tài)的監(jiān)聽(tīng)父組件傳過(guò)來(lái)的數(shù)據(jù),但是卻改變不了子組件里的data里的初始化數(shù)據(jù)。因?yàn)檫@個(gè)初始化數(shù)據(jù)會(huì)影響頁(yè)面,如圖1,圖中的輸入框等都是通過(guò)動(dòng)態(tài)數(shù)據(jù)加載出來(lái)的,不同的選擇模板出來(lái)的文本框的數(shù)量類(lèi)型都不一樣,我用的是element ui的那個(gè)組件,如果不初始化就輸入不了,所以想問(wèn)下大家有沒(méi)有可以動(dòng)態(tài)更新子組件全部的,包括初始化這塊
clipboard.png

這個(gè)是父組件代碼:
clipboard.png

下面是子組件代碼:
圖片描述

我其實(shí)問(wèn)題最主要的是子組件里的文本框的數(shù)量是根據(jù)contractTemplateDetail里返回的數(shù)據(jù)決定的,會(huì)給我返回一個(gè)數(shù)組,數(shù)組的長(zhǎng)度決定輸入框的數(shù)量,而子組件的data里會(huì)對(duì)contractTemplateDetail的數(shù)據(jù)進(jìn)行遍歷然后會(huì)給輸入框做一個(gè)初始化,只有做了初始化文本框才能正常輸入,我監(jiān)聽(tīng)了contractTemplateDetail這個(gè)也只能改變這個(gè)數(shù)據(jù),但是初始化只做一次呢,也就是data里遍歷做初始化只有一開(kāi)始一次,后面的動(dòng)態(tài)改變都不能再初始化呢,我想問(wèn)大家有沒(méi)有好的辦法

回答
編輯回答
神經(jīng)質(zhì)

你在template里面用v-if或者v-show這種先寫(xiě)好所有模板,然后改變對(duì)應(yīng)的true值來(lái)使用不同的模板應(yīng)該可以的

2017年11月22日 01:08
編輯回答
愚念

你的watch的代碼呢? 這個(gè)要再watch里進(jìn)行處理的。要看你的代碼 watch

2017年5月31日 19:44
編輯回答
安于心

如果你傳給子組件是data對(duì)象呢,watch也就能監(jiān)聽(tīng)到contractTemplateDetails,和flatCode的變化了吧

data: {
    contractTemplateDetails:contractTemplateDetails,
    flatCode: flatCode
}
2018年1月20日 06:00