vue2和el-input無(wú)法修改和寫(xiě)入并且不報(bào)錯(cuò)的解決方案
看過(guò)相關(guān)的很多內(nèi)容,大部分集中在說(shuō)需要添加$forceUpdate.而我根本不行。具體業(yè)務(wù)場(chǎng)景詳見(jiàn)下文
一. 業(yè)務(wù)場(chǎng)景描述
在我所在的業(yè)務(wù)場(chǎng)景中。我嵌套了多層匿名子組件,用來(lái)展示某條數(shù)據(jù)的不同業(yè)務(wù)
如上圖在基本情況簡(jiǎn)介中有數(shù)個(gè)屬性表單。
我如下遍歷
<el-table v-loading="loading" :data="xunchaDataList" @expand-change="expandRow" @selection-change="handleSelectionChange"> <el-table-column type="expand"> <template #default="props"> ............. <el-tab-pane label="基本情況簡(jiǎn)介" name="introduction"> <template v-if="props.row.countryType === '村社區(qū)'"> ............ <div v-if="String(props.row.country_introducts[item.key]).length <= 15"> <el-input :readonly="isOnlyRead" :placeholder="props.row.country_introducts[item.key]" v-model="props.row.country_introducts[item.key]"/> </div> </template> <template v-else> 暫無(wú)數(shù)據(jù)</template> </el-tab-pane> </template> </el-table-column> </el-table>
上述內(nèi)容中經(jīng)測(cè)試,數(shù)據(jù)回顯異常,程序不報(bào)錯(cuò),無(wú)法顯示輸入變化,但是數(shù)據(jù)可以被正常修改。
二. 原因分析
v-model="props.row.country_introducts[item.key]"
這里存在多個(gè)問(wèn)題:
vue規(guī)范中子組件不能直接被修改,保證了單向數(shù)據(jù)流,避免了數(shù)據(jù)的混亂與不可預(yù)測(cè)性。 但經(jīng)測(cè)試是可以修改,但是無(wú)法回顯罷了。建議不要這樣做。vue無(wú)法監(jiān)聽(tīng)動(dòng)態(tài)屬性,country_introducts[item.key]是不可預(yù)測(cè)的,沒(méi)有在vue初始化時(shí)和vue綁定,vue無(wú)法感知?jiǎng)討B(tài)新增的屬性變化。
三.解決方案
3.1 方案一 原生標(biāo)簽(不建議)
使用原生input等。他的機(jī)制和el-input略有不同。但也不建議。因?yàn)?code>v-model="props.row.country_introducts[item.key]"仍然破壞了vue的單向數(shù)據(jù)流原則。
3.2 方案二 父子傳遞(不建議)
使用父子傳遞,通知父組件強(qiáng)制刷新。 但我的業(yè)務(wù)中可以發(fā)現(xiàn),進(jìn)行了多層匿名子組件嵌套。遞交任務(wù)十分麻煩。
3.3 方案三 vuex,pinia 狀態(tài)傳值(不建議)
雖然可以通過(guò)這種方式讓父子數(shù)據(jù)交互,但可以發(fā)現(xiàn),子組件的v-model接收對(duì)象,和props.row的交互邏輯異常麻煩。
3.4 方案四 vue初始化屬性 (建議)
業(yè)務(wù)中原本使用動(dòng)態(tài)方式,
由于orginParams初始化為 originParams:{}.造成originParams被賦值時(shí),屬性均為動(dòng)態(tài)型。
解決方案就是按照prop.row包含的屬性。將originParams初始化。
到此這篇關(guān)于vue2和el-input無(wú)法修改和寫(xiě)入,并且不報(bào)錯(cuò)的文章就介紹到這了,更多相關(guān)vue2 el-input無(wú)法修改內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- VUE?Element修改el-input和el-select長(zhǎng)度的具體步驟
- vue中element-ui不能修改el-input框,或是不能修改某些值問(wèn)題
- vue--elementui中如何修改el-input樣式
- vue?element-plus中el-input修改邊框border的方法
- vue在使用element組件出現(xiàn)<el-input>標(biāo)簽無(wú)法輸入的問(wèn)題
- vue?el-input設(shè)置必填提示功能(單個(gè)與多個(gè))
- Vue使用el-input自動(dòng)獲取焦點(diǎn)和二次獲取焦點(diǎn)問(wèn)題及解決
相關(guān)文章
vue實(shí)現(xiàn)登錄時(shí)滑塊驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)登錄時(shí)滑塊驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue實(shí)現(xiàn)卡片翻轉(zhuǎn)輪播展示
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)卡片翻轉(zhuǎn)輪播展示,同時(shí)在翻轉(zhuǎn)時(shí)切換數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01html中創(chuàng)建并調(diào)用vue組件的幾種方法匯總
這篇文章主要介紹了html中創(chuàng)建并調(diào)用vue組件的幾種方法匯總,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2020-11-11vue使用nprogress實(shí)現(xiàn)進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了vue使用nprogress實(shí)現(xiàn)進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12vue函數(shù)input輸入值請(qǐng)求時(shí)延遲1.5秒請(qǐng)求問(wèn)題
這篇文章主要介紹了vue函數(shù)input輸入值請(qǐng)求時(shí)延遲1.5秒請(qǐng)求問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Vue組件簡(jiǎn)易模擬實(shí)現(xiàn)購(gòu)物車
這篇文章主要為大家詳細(xì)介紹了Vue組件簡(jiǎn)易模擬實(shí)現(xiàn)購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12vue實(shí)現(xiàn)app頁(yè)面切換動(dòng)畫(huà)效果實(shí)例
本篇文章主要介紹了vue實(shí)現(xiàn)app頁(yè)面切換動(dòng)畫(huà)效果實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05