0

假设我有一个像这样的数据对象:

const o = [
  {name: "A", v: 1, other: 0},
  {name: "B", v: 7, other: 0},
  {name: "C", v: 8, other: 0},
  {name: "D", v: 1, other: 1},
]

我希望能够定义一个嵌套的观察者,例如:

_sumOfVs(o.*.v)

这样观察者只v在对象中的键被编辑时更新,而不是在name或被other更新时重新计算。目前我能做的最好的是将观察者定义为_sumsOfVs(o.*)

_sumsOfVs = obj => obj.base.reduce((p,c) => p+c.v, 0)

谢谢!

4

1 回答 1

1

看起来没有办法只观察通配符 ( o.*.v) 中的特定子属性,但您可以在通配符观察者 () 中检查更改记录的路径o.*,过滤掉不需要的路径,以便观察者在更改时提前退出-记录不适用于.v.

_sumOfVs: function(changeRecord) {
  if (changeRecord.path.endsWith('.v')) {
    const sum = changeRecord.base.reduce((p,c) => p + Number(c.v), 0);
    console.log('sum', sum);
  }
}

密码笔

于 2016-10-28T19:04:45.513 回答