欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue2?element-ui?el-checkbox視圖不更新問(wèn)題及解決

 更新時(shí)間:2024年12月26日 11:08:04   作者:木有名字就是最好的名字  
作者在開(kāi)發(fā)過(guò)程中遇到了視圖不更新的問(wèn)題,最終通過(guò)改變一個(gè)無(wú)關(guān)緊要的響應(yīng)式數(shù)據(jù)來(lái)解決,讓視圖發(fā)生改變

vue2 element-ui el-checkbox視圖不更新

今天在開(kāi)發(fā)過(guò)程發(fā)現(xiàn)一個(gè)問(wèn)題,如標(biāo)題所描述的,我在更改了data(){return{}}里的數(shù)據(jù)后, 也就是對(duì) el-checkbox 的 v-model 綁定了一個(gè) data() 里面的數(shù)據(jù),與之對(duì)應(yīng)的視圖沒(méi)有發(fā)生變化

我之所以 斷定 我data() 里的數(shù)據(jù)發(fā)生了變化,而視圖沒(méi)有發(fā)生變化,是因?yàn)?在chrome 的 插件 vue devtools 中 確認(rèn)了 data() 數(shù)據(jù)是發(fā)生了改變, 也就證明el-checkbox 的v-model綁定的boolean 值發(fā)生了改變,此時(shí)視圖應(yīng)該 按照 v-model="false" ==> v-model="true" 從 未勾選狀態(tài)==>勾選狀態(tài) 但是 頁(yè)面一直沒(méi)有更新。

在確認(rèn)自己不是因?yàn)榈图?jí)錯(cuò)誤而導(dǎo)致的 視圖不更新后, 對(duì)該問(wèn)題進(jìn)行了 不同的處理

1: 百度: 使用 $set() 、使用froceUpdate() 這兩者都不起作用

既然 已經(jīng)明確了 數(shù)據(jù)是發(fā)生了變化,依賴數(shù)據(jù)的視圖沒(méi)有發(fā)生改變, 那么 可以通過(guò) 較為偏激的方法 用v-if="true" / v-if="false" 的方法 將組件銷毀再重新掛載, (此種方法過(guò)于 偏激,而且相對(duì)另類 不推薦使用)

既然有通過(guò) v-if 的方法 強(qiáng)行讓 元素重新渲染,那么 是否可以利用 vue 的一些特性進(jìn)行類似的操作呢?

我個(gè)人觀點(diǎn)

vue 響應(yīng)式 可以通過(guò) 數(shù)據(jù)驅(qū)動(dòng)頁(yè)面的更新 加上 diff算法, 可以試著給 el-checkbox 組件 一個(gè) 無(wú)關(guān)緊要的屬性

例如 :

data-xxx=“響應(yīng)式數(shù)據(jù)” 通過(guò)更改 該響應(yīng)式數(shù)據(jù) 讓vue 在進(jìn)行diff算法中,發(fā)現(xiàn)虛擬Dom el-checkbox 的其中一個(gè) data-xxx 屬性發(fā)生變化,從而 讓其觸發(fā)該組件的 渲染,以達(dá)到 v-model 綁定的值改變 所對(duì)應(yīng)的 視圖發(fā)生變化。

  • 例子:
<el-checkbox v-model="list[index].obj[value].checked" :data-a="checked">
  • 偽代碼:
function changeValue(){
// 將 list[index].obj[value].checked 為 false 改為 true

this.list[index].obj[value].checked = true // 此時(shí)視圖 并沒(méi)有因?yàn)?數(shù)據(jù)的變化 而 從 未勾選變成勾選狀態(tài)

// 更改一個(gè) 無(wú)關(guān)緊要的 數(shù)值
this.checked = !this.checked // 此處 無(wú)論checked 是什么 都不影響 目的是讓vue 去重新渲染 el-checkbox 這個(gè)組件

}

總結(jié)

其實(shí)在一般的vue 開(kāi)發(fā)中,如果 響應(yīng)式數(shù)據(jù) 不是那種 非常復(fù)雜的數(shù)據(jù)類型一般不會(huì)出現(xiàn)響應(yīng)式數(shù)據(jù)變化而視圖不更行的情況,

但 上述例子中 list是一個(gè)數(shù)組,數(shù)組里面有多個(gè)屬性,其中一個(gè)屬性為一個(gè)對(duì)象,而我們需要改變的值就是這個(gè)對(duì)象的其中一個(gè)屬性, 可能 在vue 的雙向綁定中,

由于 list 是一個(gè)相對(duì)復(fù)雜的數(shù)據(jù)類型,當(dāng)深層次里的屬性發(fā)生了 改變, vue沒(méi)法做到 數(shù)據(jù)驅(qū)動(dòng) 視圖更新,

當(dāng)我們非常確認(rèn)數(shù)據(jù)已經(jīng)更新了, 僅僅是視圖沒(méi)有發(fā)生變化,此時(shí) 要做的就是 能讓 視圖發(fā)生改變的操作 通過(guò)改變一個(gè)無(wú)關(guān)緊要的 響應(yīng)式數(shù)據(jù) 從而 讓 組件進(jìn)行 重新渲染操作 無(wú)疑是一個(gè) 不錯(cuò)的 解決方案

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實(shí)現(xiàn)滑動(dòng)解鎖功能

    vue實(shí)現(xiàn)滑動(dòng)解鎖功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)滑動(dòng)解鎖功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • el-tree樹組件懶加載(后端上千條數(shù)據(jù)前端進(jìn)行處理)

    el-tree樹組件懶加載(后端上千條數(shù)據(jù)前端進(jìn)行處理)

    本文主要介紹了el-tree樹組件懶加載(后端上千條數(shù)據(jù)前端進(jìn)行處理),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • vuejs手把手教你寫一個(gè)完整的購(gòu)物車實(shí)例代碼

    vuejs手把手教你寫一個(gè)完整的購(gòu)物車實(shí)例代碼

    這篇文章主要介紹了vuejs-手把手教你寫一個(gè)完整的購(gòu)物車實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 代替Vue?Cli的全新腳手架工具create?vue示例解析

    代替Vue?Cli的全新腳手架工具create?vue示例解析

    這篇文章主要為大家介紹了代替Vue?Cli的全新腳手架工具create?vue示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • vue中input框的禁用和可輸入問(wèn)題

    vue中input框的禁用和可輸入問(wèn)題

    這篇文章主要介紹了vue input框的禁用和可輸入問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 從vue-router看前端路由的兩種實(shí)現(xiàn)

    從vue-router看前端路由的兩種實(shí)現(xiàn)

    本文由淺入深觀摩vue-router源碼是如何通過(guò)hash與History interface兩種方式實(shí)現(xiàn)前端路由,介紹了相關(guān)原理,并對(duì)比了兩種方式的優(yōu)缺點(diǎn)與注意事項(xiàng)。最后分析了如何實(shí)現(xiàn)可以直接從文件系統(tǒng)加載而不借助后端服務(wù)器的Vue單頁(yè)應(yīng)用。
    2021-05-05
  • 一個(gè)可復(fù)用的vue分頁(yè)組件

    一個(gè)可復(fù)用的vue分頁(yè)組件

    這篇文章主要為大家詳細(xì)介紹了一個(gè)可復(fù)用的vue分頁(yè)組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Vue項(xiàng)目中引入外部文件的方法(css、js、less)

    Vue項(xiàng)目中引入外部文件的方法(css、js、less)

    本篇文章主要介紹了Vue項(xiàng)目中引入外部文件的方法(css、js、less),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-07-07
  • vue自定義指令實(shí)現(xiàn)v-tap插件

    vue自定義指令實(shí)現(xiàn)v-tap插件

    這篇文章主要為大家詳細(xì)介紹了vue自定義指令實(shí)現(xiàn)v-tap插件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    這篇文章主要介紹了vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論