今天做项目碰到了一个比较麻烦的问题

for (let i = 0;i<that.list.length;i++){
    if(that.list[i].id === e.target.dataset.id){
        that.$forceUpdate();
        that.list[i].total = 0
        that.list[i].isChecked === 0 ? that.list[i].isChecked = 1 : that.list[i].isChecked = 0
        let list_item = that.list[i].list
        for(let j = 0;j<list_item.length;j++){
            list_item[j].isChecked = that.list[i].isChecked
        }
    }
}

这段代码是成功的代码主要是在改变数据前先调用that.$forceUpdate();

vue中对于数据结构层次较深的数据更新有可能不会自动触发render函数。

如果上述没有调用that.$forceUpdate();直接打印出来的data数据是会变化的但是实际上视图上的数据其实是没有更新的

Logo

前往低代码交流专区

更多推荐