vue, v-if绑定到data里一个对象, 改变该对象属性, 没有更新dom

//html内容

<img v-if="value.exist" v-for="(value, name) in picsList">
 
//vm实例内data内容
data: {
  picsList: {
    name1:
    {
      exist: true
    },
    name2:
    {
      exist: true
    }
  }
}

//执行操作
Vue.set(vm.picsList["name1"], 'exist', false)

//结果
data: {
  picsList: {
    name1:
    {
      exist: false
    },
    name2:
    {
      exist: true
    }
  }
}

//然而img元素并没有删除

//求指导
阅读 6.6k
6 个回答

问题发现了!原因是vue无法监视对象属性的增删,需要通过Vue.delete操作

直接修改试试 vm.picsList.name1.exist = false

建议返回一个新对象 ,使用Object.assign()返回一个新的picsList[],vue中貌似不能监听内部属性的变化

v-if="value.exist" 这个value在哪里?

v-for 记得加 key

<img v-if="value.exist" :key="name" v-for="(value, name) in picsList">
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题