Polymer 1.0 通配符绑定到数组中的嵌套子属性
Posted
技术标签:
【中文标题】Polymer 1.0 通配符绑定到数组中的嵌套子属性【英文标题】:Polymer 1.0 wildcard bind against a nested subproperty in an array 【发布时间】:2017-03-11 17:01:46 【问题描述】:假设我有一个这样的数据对象:
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)
谢谢!
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Polymer 1.0 通配符绑定到数组中的嵌套子属性的主要内容,如果未能解决你的问题,请参考以下文章