自定义组件中定义了一个数组类型的propertie,局部修改数组的某个元素,导致 Observer 回调函数的 val 值为修改的数组元素值,正确情况是,不应该触发才对;
Component({ properties: { list: { type: Array, value: [{ key: '1' }], observer(val) { console.log(val); } } },
changeSubItem() { const data = Object.assign({}, this .data.list[0]); // 创建一个新对象,并浅复制 data.key = '2' ; this .setData({ [`list[0]`]: data // 修改数组第一个元素 }); } } }); |
抱歉,文档上忘了说明 observer 有第三个参数表示修改的是哪个部分的值,你可以依靠这个来判断。我们之后会更新一下文档。
如果需要整体的值,可以直接读取 this.data.PROPERTY_NAME 。
你好,目前的设计是,即使是进行局部修改,也一定会触发observer。
局部修改的时候newValue的值为什么是这个局部的值而不是整体的值。。。。。