L 'objet Polymer properties prend en charge deux clés différentes que je ne comprends pas très bien la différence entre, reflectToAttribute et notify.

reflectToAttribute indique que l'attribut sur le nœud hôte changera lorsque la valeur changera.

notify dit qu'il rend la propriété disponible pour une liaison bidirectionnelle.

N'est-ce pas un peu la même chose? Si vous avez défini notify sur true, y a-t-il une raison pour laquelle vous auriez encore besoin de reflectToAttribute?

Quelqu'un pourrait-il m'expliquer exactement comment ces clés sont liées les unes aux autres? Merci!

8
Carson McNeil 16 janv. 2017 à 09:11

2 réponses

Meilleure réponse

reflectToAttribute consiste à ajouter l'attribut au DOM. De cette façon, vous pouvez par exemple l'utiliser comme sélecteur dans CSS

notify est comme mentionné dans votre question pour la liaison bidirectionnelle.

Ce sont deux objectifs entièrement différents.

11
Günter Zöchbauer 16 janv. 2017 à 06:17

Si dans un component, vous attribuez reflectToAttribute: true à la propriété appelée prop, alors prop apparaîtra comme un attribut dans la balise d'élément de ce component, qui peut être vu des outils de développement:

<component prop></component>

Comme mentionné, dans component, vous pouvez utiliser l'attribut prop - as-attribute dans votre section de style: :host([prop]) div { background-color: green }

Dans litElement , nous écrivons simplement: reflect: true.

Comme vous le savez, si vous attribuez notify: true à un accessoire particulier, sa valeur sera reflétée dans le prop correspondant du parent (liaison bidirectionnelle).

Dans litElement , notify n'existe pas. Au lieu de cela, pour renvoyer des informations au parent, vous pouvez envoyer un événement personnalisé dans l'enfant et l'écouter dans le parent.

Lorsque j'ai essayé Polymer pour la première fois, j'étais confus au départ car je pensais que pour informer un parent d'un changement, nous devions refléter l'accessoire comme un attribut, mais ce n'est pas le cas.

0
mac 18 juin 2020 à 14:56