0

说我有等的数据对象,以便:聚合物针对阵列中的嵌套子属性1.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键被编辑时观察者才会更新,并且当更新nameother时不会重新计算。目前我能做的最好的是定义观察者_sumsOfVs(o.*)

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

谢谢!

回答

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); 
    } 
} 

codepen