Vue | v-for遍歷的數(shù)組元素?zé)o法動(dòng)態(tài)渲染

需求

如下圖所示的一個(gè)密碼隱藏/顯示按鈕

隱藏/顯示按鈕

理論上是一個(gè)很簡(jiǎn)單的功能,可以在data里寫(xiě)一個(gè)boolean,然后通過(guò)@click改變boolean狀態(tài)控制密碼的隱藏/顯示。

但是問(wèn)題來(lái)了,這個(gè)隱藏按鈕是通過(guò)v-for循環(huán)輸出的。所以按照上面的寫(xiě)法,就會(huì)遇到看起來(lái)可以改變狀態(tài)成功(控制臺(tái)輸出)但實(shí)則并沒(méi)有任何反應(yīng)的情況。

懷疑人生反復(fù)查閱后才得知,v-for渲染的列表不能通過(guò) arr[index] 修改數(shù)據(jù),進(jìn)行視圖渲染。

解決方案:this.$set(array, index, newArray)方法。

例:
HTML

<div v-for="(array, index) in arrayList">
  <!-- ... -->
  <input :type="arrayList[index].pswVisible?'text':'password'" :value="array.password" disabled>
  <a>
    <img @click="changeVisible(index)" :src="array[index].pswVisible?visibleSrc:InvisibleSrc">
  </a>
</div>

JS

changeVisible (index) {
  let newArr = this.arrayList[index]
  newArr.pswVisible = !newArr.pswVisible
  Vue.set(this.accountsList, index, newArr)
}

如此這般,就行了。

感謝以下文章抬一手,救我于苦海之中:

vue使用v-for渲染列表后如何改變狀態(tài)?
Vue 列表渲染——v-for循環(huán)渲染細(xì)節(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容