vue2和el-input無法修改和寫入并且不報錯的解決方案
看過相關(guān)的很多內(nèi)容,大部分集中在說需要添加$forceUpdate.而我根本不行。具體業(yè)務(wù)場景詳見下文
一. 業(yè)務(wù)場景描述
在我所在的業(yè)務(wù)場景中。我嵌套了多層匿名子組件,用來展示某條數(shù)據(jù)的不同業(yè)務(wù)
如上圖在基本情況簡介中有數(shù)個屬性表單。
我如下遍歷
<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="基本情況簡介" 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> 暫無數(shù)據(jù)</template> </el-tab-pane> </template> </el-table-column> </el-table>
上述內(nèi)容中經(jīng)測試,數(shù)據(jù)回顯異常,程序不報錯,無法顯示輸入變化,但是數(shù)據(jù)可以被正常修改。
二. 原因分析
v-model="props.row.country_introducts[item.key]"
這里存在多個問題:
vue規(guī)范中子組件不能直接被修改,保證了單向數(shù)據(jù)流,避免了數(shù)據(jù)的混亂與不可預(yù)測性。 但經(jīng)測試是可以修改,但是無法回顯罷了。建議不要這樣做。vue無法監(jiān)聽動態(tài)屬性,country_introducts[item.key]是不可預(yù)測的,沒有在vue初始化時和vue綁定,vue無法感知動態(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)傳值(不建議)
雖然可以通過這種方式讓父子數(shù)據(jù)交互,但可以發(fā)現(xiàn),子組件的v-model接收對象,和props.row的交互邏輯異常麻煩。
3.4 方案四 vue初始化屬性 (建議)
業(yè)務(wù)中原本使用動態(tài)方式,
由于orginParams初始化為 originParams:{}.造成originParams被賦值時,屬性均為動態(tài)型。
解決方案就是按照prop.row包含的屬性。將originParams初始化。
到此這篇關(guān)于vue2和el-input無法修改和寫入,并且不報錯的文章就介紹到這了,更多相關(guān)vue2 el-input無法修改內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)卡片翻轉(zhuǎn)輪播展示
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)卡片翻轉(zhuǎn)輪播展示,同時在翻轉(zhuǎn)時切換數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下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ì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12vue函數(shù)input輸入值請求時延遲1.5秒請求問題
這篇文章主要介紹了vue函數(shù)input輸入值請求時延遲1.5秒請求問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04vue實(shí)現(xiàn)app頁面切換動畫效果實(shí)例
本篇文章主要介紹了vue實(shí)現(xiàn)app頁面切換動畫效果實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05