关于 setData 的一个问题
如图。
如果我在代码中写
Page({ data: { text: 'init data', array: [{text: 'init data'}], object: { text: 'init data' } }}) |
如果调用
this.setData({ 'array[0].text':'changed data'}) |
按照文档所说,此时, this.data.array[0].text 应该会变成 changed data 。
如果我调用
this.setData({ 'arr[0].text':'changed data',}) |
按照文档所说,此时, this.data.arr[0].text 应该会变成 changed data 。
那如果,我需要 this.data['arr[0].text '] 赋值,应该如何处理?
又或者,这样调用
this.setData({ 'array[0].text':'changed data', 'text':'changed text'}) |
这时候,又应该如何进行呢?
选项一:this.data.text === ‘changed text’, this.data.array[0].text === ‘changed data’
选项二:this.data.text === ‘changed text‘, this.data[‘array[0].text’] === ‘changed data’
(通过实际代码运行结果,是选项一为答案)
参考 lodash 的做法,是 _.set(obj, path, value) ,确定了一定是切割 path 进行数据创建的,但是只局限于一次进行一个 path 的设置。
疑惑就是这个,希望能解答。
最好就是能把内部实现的 setData 代码贴出来,方便查阅。
