tipSelectChange: function (e) { let originalOptions=Object.assign([], this.data.tipSelectOptions); this.setData({ tipConfirmed:originalOptions }) // console.log(e); // console.log(this.data); let index = e.currentTarget.id.replace("tip-", ""); var result = this.data.tipSelectOptions; if (index == 0) { for (let item of result) { item.value = false; } } else { result[0].value = false; } result[index].value = !result[index].value; let flag = true; for (let item of result) { if (item.value !== false) { flag = false; break; } } if (flag) { result[0].value = true; } this.setData({ tipSelectOptions: result, }); },怎么让tipConfirmed不随tipSelectOptions改变
时间: 2024-02-10 12:12:52 浏览: 56
可以使用深拷贝来避免tipConfirmed随着tipSelectOptions的改变而改变。在代码中,可以将Object.assign改为JSON.parse(JSON.stringify())来进行深拷贝,即:
```
let originalOptions = JSON.parse(JSON.stringify(this.data.tipSelectOptions));
this.setData({
tipConfirmed: originalOptions
})
```
这样,tipConfirmed就不会随着tipSelectOptions的改变而改变了。
相关问题
tipConfirmed: Object.assign([],this.data.tipSelectOptions)
这段代码的作用是将当前组件的 `data` 对象中的 `tipSelectOptions` 数组复制一份,并将复制后的数组赋值给一个新的空数组。
具体来说,`Object.assign()` 方法是用于将一个或多个源对象的属性复制到目标对象中。在这个例子中,源对象是一个空数组 `[]`,目标对象是 `this.data.tipSelectOptions`。因此,`Object.assign([],this.data.tipSelectOptions)` 就是将 `this.data.tipSelectOptions` 中的所有属性复制到一个新的空数组中,相当于创建了一个新的、与 `this.data.tipSelectOptions` 相同的数组。
这样做的原因可能是为了在不改变原数组的情况下,对新的数组进行一些操作,例如筛选、排序等等。
阅读全文