0

que j'ai un objet de données comme ceci:polymère 1.0 bind générique contre une sous-imbriqué dans un tableau

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}, 
] 

Je veux être en mesure de définir un observateur imbriqué comme:

_sumOfVs(o.*.v) 

Cette façon dont l'observateur ne se met à jour que lorsque la clé v des objets est modifiée et non recalculée lorsque name ou other sont mis à jour. À l'heure actuelle le meilleur que je peux faire est de définir l'observateur comme _sumsOfVs(o.*):

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

Merci!

Répondre

1

Il ne ressemble pas à il y a un moyen d'observer que des sous-propriétés spécifiques hors d'un caractère générique (o.*.v), mais vous pouvez vérifier le chemin du changement record de l'observateur générique (o.*), filtrage des chemins indésirables afin que l'observateur quitte tôt si l'enregistrement de changement ne s'applique pas à .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