美文网首页前端填坑
Vue | v-for遍历的数组元素无法动态渲染

Vue | v-for遍历的数组元素无法动态渲染

作者: StAndres | 来源:发表于2020-01-07 17:40 被阅读0次

需求

如下图所示的一个密码隐藏/显示按钮

隐藏/显示按钮
理论上是一个很简单的功能,可以在data里写一个boolean,然后通过@click改变boolean状态控制密码的隐藏/显示。

但是问题来了,这个隐藏按钮是通过v-for循环输出的。所以按照上面的写法,就会遇到看起来可以改变状态成功(控制台输出)但实则并没有任何反应的情况。

怀疑人生反复查阅后才得知,v-for渲染的列表不能通过 arr[index] 修改数据,进行视图渲染

解决方案: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渲染列表后如何改变状态?
Vue 列表渲染——v-for循环渲染细节

相关文章

  • Vue | v-for遍历的数组元素无法动态渲染

    需求 如下图所示的一个密码隐藏/显示按钮 但是问题来了,这个隐藏按钮是通过v-for循环输出的。所以按照上面的写法...

  • vue列表渲染

    vue列表渲染v-for类似js语言中的for循环,用vue列表渲染指令渲染数组,可以类比js中用for循环遍历数...

  • 列表渲染

    1.v-for遍历数组 2.v-for遍历对象 v-for默认使用“就地复用”策略更新已渲染过的元素列表,为了跟踪...

  • 【Vue】列表渲染与事件处理

    1. 列表渲染 使用v-for指令基于数组或对象来渲染一个列表 使用v-for迭代或遍历一个数组 使用v-for迭...

  • 记录一个Vue中改变循环遍历后的数据的坑

    问题背景 使用v-for遍历对象渲染数据,被渲染的数据改变时另一数据需要联动改变场景图 Vue中对数组和对象的改变...

  • vue渲染部分元素的优化技巧

    一般我们过滤数组中的元素时,我们常会在元素中同时使用v-if和v-for标签 这种方法渲染的时候会遍历整个数组,性...

  • vue事件代理

    一般使用 v-for遍历数组然后给每个子元素绑定onClick方法然后传入下标: 但如果列表很长需要渲染的元素很多...

  • Vue 列表渲染

    Vue 使用 v-for 指令渲染一组数据 渲染数组 渲染对象 在 v-for 指令中可以使用 of 分隔符替换 ...

  • VUE复习笔记8(列表渲染)

    用 v-for 把一个数组 对应为 一组元素 我们使用 v-for 指令根据数组的列表来进行渲染。v-for指令需...

  • Vue3Cli-列表渲染(v-for使用)

    列表渲染:使用 v-for 指令基于一个数组来渲染一个列表。 一、v-for 用法:基于源数据多次渲染元素或模板块...

网友评论

    本文标题:Vue | v-for遍历的数组元素无法动态渲染

    本文链接:https://www.haomeiwen.com/subject/liqdactx.html