哪位大佬帮我找找原因?
发布于 5 年前 作者 xiuyinglai 4804 次浏览 来自 官方Issues

 

 

   let list = this.data.list;

    let index = e.currentTarget.dataset.index;
    list[index].num = list[index].num + 1;

    this.setData({ is_edit:false})


 

     我setData了一个无关的值,list数组也跟着setData了,但是list在页面的数据没更新,不想list被setData

6 回复

但是list在页面的数据没更新,不想list被setData

肯定没更新,list想被setData也没办法

setData 会跟更新 data上的数据 并渲染到页面上   你更改了 list数组中的某个元素的值  但是没有setData 所以页面上没有更新  你只是更改了 data对象中 list属性的值  并没有setData

如果list里放的基本类型的数据

let list = this.data.list.concat()

如果有对象类型的,可以用json转,性能要低点,不过也还好

let list = JSON.parse(JSON.stringify(this.data.list))

setData才能更新视图

我理解的是,在开发工具环境中,只使用this.data.***来修改数据,开发工具AppData里的数据也会同步改,但是并不会同步到页面上;而在AppData里改是会同步到页面上的。

剩下的跟楼上说的点都一样。Page.data既存在于JS逻辑层和View视图层中,理论上它俩的数据内容是一样的,但它们数据又是分开的,在两个层里面分别存放了一份拷贝。即使你截图里有代码是修改到了list,但是使用这种修改是不会更新到页面的。

你不是只setData了is_edit吗

回到顶部