0

Say I ein Datenobjekt wie so habe:Polymer 1,0 Wildcard bind gegen eine verschachtelte subproperty in einem 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}, 
] 

Ich möchte wie einen verschachtelten Beobachter definieren zu:

_sumOfVs(o.*.v) 

Dieses So aktualisiert der Beobachter nur, wenn der Schlüssel v in den Objekten bearbeitet und nicht neu berechnet wird, wenn name oder other aktualisiert werden. Derzeit ist das Beste, was ich tun kann, ist, den Betrachter als _sumsOfVs(o.*) zu definieren:

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

Dank!

Antwort

1

Es sieht nicht wie es eine Möglichkeit, nur bestimmte Untereigenschaften aus einem Platzhalter (o.*.v) zu beobachten, aber man kann den Wechsel Rekord Pfad im Wildcard Beobachter (o.*) überprüfen, unerwünschte Pfade so Ausfiltern, dass der Beobachter tritt früh aus, wenn der Änderungssatz nicht auf .v zutrifft.

_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