/ / Les attributs doivent-ils être des objets passés? - polymère

Les attributs doivent-ils être passés à des objets? - polymère

Quand je passe des valeurs à un élément polymèreattribut, je peux transmettre un objet via la liaison de données de Polymer. Toutefois, si je décide de quitter "polymer-land" et que je veux définir l’attribut sur un objet, je ne peux pas. Dois-je passer des objets à des attributs?

Si la réponse est "non, vous devez utiliser des méthodes decette" la question suivante pourrait alors être la suivante: "puis-je appeler la méthode d'un élément sans être dans le cadre Polymer?" Par exemple, si j'ai un élément Polymer:

<hello></hello>

et je veux accéder à une méthode qu’elle a appelée "monde". En Polymère ce serait:

this.$.hello.world();

Est-il possible d'appeler cette méthode sans être dans une définition d'élément Polymer?

Réponses:

8 pour la réponse № 1

De l'intérieur du polymère

Comme vous l'avez souligné, dans Polymer, vous pouvez utiliser la liaison de données pour lier un objet à une propriété publiée:

<polymer-element name="other-el">
<template>
<hello-world persons="{{persons}}"></hello-world>
</template>
<script>
Polymer("other-el", {
created: function() {
this.persons = [{"name": "Eric"}, {"name": "Bob"}];
}
});
</script>
</polymer-element>

De polymère extérieur

Depuis l’extérieur de Polymer, les éléments Polymer prennent également en charge les tableaux / objets sérialisés pour les attributs si leur le type de propriété est laissé entendre:

<hello-world persons="[{"name": "Eric"}, {"name": "Bob"}]"></hello-world>

Car .persons est une propriété de l'élément, vous pouvez également le définir dans JS:

document.querySelector("hello-world").persons = [{"name": "Eric"}, {"name": "Bob"}];

1 pour la réponse № 2

Donc, pour répondre à ma propre question.

Je crois que les attributs ne doivent pas être des objets passés. Si vous devez passer un objet dans un élément, utilisez les méthodes d'élément.

Pour appeler une méthode, vous pouvez utiliser une sélection d’élément simple et un appel de méthode.

document.querySelector("hello").world();

Je pensais avoir essayé cela et cela n’avait pas fonctionné.

-Geai