开发者社区 问答 正文

vue给对象添加属性后为什么没有消失?

就是一个播放视频的标志 点击后消失 如果list里面每个对象上本身有flag属性 点击后可以消失 但是对象本身是没有flag这个属性的 点击一次后我给对象加上了这个属性并且为flase 可是试了一下下面这样不行 并不能消失 这是怎么回事?

下面是点击一次后添加flag的截图 可以看到添加成功了 但是没有消失 这是为什么?

image.png

image.png

<div class="video" v-for="(item,index) in list">
       <video loop="true" @click="play(index)" ref="videos" muted="false" :src="item.src"></video>
       <img v-if="item.flag==null||item.flag?true:false" @click="play(index)" src="static/Img/play.png">
</div>

list:[ { src: 'https://outin-c90b11e33fe411e9bc7100163e00b174.oss-cn-shanghai.aliyuncs.com/sv/3850be7-16f85430281/3850be7-16f85430281.mp4' }, { src: 'https://outin-c90b11e33fe411e9bc7100163e00b174.oss-cn-shanghai.aliyuncs.com/sv/3850be7-16f85430281/3850be7-16f85430281.mp4' }, { src: 'https://outin-c90b11e33fe411e9bc7100163e00b174.oss-cn-shanghai.aliyuncs.com/sv/3850be7-16f85430281/3850be7-16f85430281.mp4' } ],

play(index){
          this.list[index].flag = false
}

展开
收起
问问小秘 2020-01-09 15:56:39 482 分享 版权
1 条回答
写回答
取消 提交回答
  • 因为在data里没有声明flag,所以这个属性不是响应式的,你可以使用set使它变成响应式的属性。

    this.$set(this.list[index], 'flag', false) 另外

    v-if="item.flag==null||item.flag?true:false" 这段代码太繁杂了,其实可以简化,你可以用flag表示是否隐藏,flag为true则隐藏,不存在或者为false则显示。

    this.$set(this.list[index], 'flag', true)

    2020-01-09 15:58:41
    赞同 展开评论