0

我有这个对象:

card: { customFields [ { id, value }, {id , value } ... ] }

customFields 数组位于卡片内部,其中包含由 id 和值组成的元素。

现在我想更新数组中的某个元素,这可以通过执行以下操作来完成:

  modifier.$set.customFields.0.value = x

但我只有一个变量中的索引号,所以我尝试了:

const index = getTargetIndex();
modifier.$set.customFields[index].value = x

但它没有用...

我必须向 modifier.$set 添加什么来更新这个数组中的元素?

替代解决方案:如果可以使用 id 对值进行更新,则我有数组中元素的 id。

4

2 回答 2

1

找到了解决方案:

modifier.$set[`customFields.${  index  }.value`]
于 2018-09-04T11:44:48.523 回答
0

看起来您需要使用第二次更新来做到这一点:

update(selector, modifier, options, callback) {
  let i = 1;
  let val = 20;

  // The field in the array you want to modify
  let _modifier = {$set: {"customFields.$.value": val}}; 

  // The selector for main element and the array element
  let _selector = Object.assign(selector, {"customFields.id": i}); 

  // Update the array
  super.update(_selector, _modifier);

  // Continue with the actual update
  return super.update(selector, modifier, options, callback);
}

我假设super.update()在同一个钩子中调用两次是安全的。

于 2018-09-04T10:40:53.587 回答