Polymer 1.0 通配符绑定到数组中的嵌套子属性
Polymer 1.0 wildcard bind against a nested subproperty in an array
假设我有一个这样的数据对象:
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)
谢谢!
看起来没有办法只观察通配符的特定子属性 (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);
}
}
假设我有一个这样的数据对象:
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)
谢谢!
看起来没有办法只观察通配符的特定子属性 (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);
}
}