【问题标题】:Polymer 1.0 wildcard bind against a nested subproperty in an arrayPolymer 1.0 通配符绑定到数组中的嵌套子属性
【发布时间】: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键被编辑时更新,而在nameother被更新时不会重新计算。目前我能做的最好的是将观察者定义为_sumsOfVs(o.*)

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

谢谢!

【问题讨论】:

    标签: data-binding polymer polymer-1.0 observers computed-properties


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      相关资源
      最近更新 更多