/ / confus au sujet des attributs publiés du polymère - polymère

confus au sujet des attributs publiés du polymère - polymère

J'ai creusé à l'élément ajax-core de polymère, code comme suit fonctionne bien:

<core-ajax url="./ajax-test.txt" auto response="{{resp}}"></core-ajax>
<textarea value="{{resp}}"></textarea>

Je peux obtenir la valeur de {{resp}} dans ce cas. J'ai fouillé dans le code source core-ajax et découvert comment cela avait été fait:

  1. faire response un attribut publié en définissant attributes="response ..."
  2. transmettre la réponse ajax à this.response

alors j’ai essayé de construire mon propre composant ajax mais cela n’a pas fonctionné, mon code de composant ajax est:

Polymer("louis-ajax", {
url: "",
response: null,
ready: function() {
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
this.response = xmlhttp.responseText;
}
}.bind(this);
xmlhttp.open("GET",this.url,true);
xmlhttp.send();
}
});

et mon code d'application est le suivant:

<louis-ajax url="http://polymer.snspay.cn/api/posts.json" response="{{response}}"></louis-ajax>
<span>We have got the ajax response as</span> : <input type="text" value="{{response}}" />

Le résultat est que la demande ajax a étéfait avec succès, mais la valeur de l'entrée est "{{response}}", pas la valeur de {{response}}, donc je pense qu'il y a quelque chose qui cloche dans la façon dont je comprends les attributs publiés, quelles aides? Thk.

Réponses:

5 pour la réponse № 1

Je sais que vous avez dit que vous l'aviez compris, mais pour les autres visiteurs de cette page qui recherchent une solution et des explications complètes, la voici.

Si vous souhaitez lier des données sans avoir à créer un élément personnalisé, vous devez placer votre code dans un modèle avec le is attribut défini sur auto-binding:

<template is="auto-binding">
<core-ajax url="./ajax-test.txt" auto response="{{resp}}"></core-ajax>
<textarea value="{{resp}}"></textarea>
</template>

Sans cela, Polymer ne saura pas qu’il a besoin de brancher les fixations dans votre HTML, et des choses comme {{resp}} sera traité comme du texte.

Des explications plus détaillées peuvent être trouvées ici: http://www.polymer-project.org/docs/polymer/databinding-advanced.html#autobinding