Ho un componente che utilizza un'istanza di <iron-ajax>
per recuperare i dati dal back-end e vorrei utilizzare <iron-request>
per inviare aggiornamenti come POST/CANCELLA richiestePolimero 1.0: più chiamate a send() metodo di richiesta di ferro
Tutto funziona perfettamente la prima volta. Tuttavia, se la richiesta viene richiamato ancora una volta, ottengo un errore:
Uncaught TypeError: Cannot read property 'then' of undefined
La mia definizione del modello si presenta così:
...
<iron-ajax id="ajax" auto verbose
url="/cart-api/"
last-response="{{ajaxResponse}}"
handle-as="json">
</iron-ajax>
<iron-request id="xhr"></iron-request>
...
Nel mio script componente io uso il metodo di <iron-request>
send()
per inviare un POST:
var me = this;
this.$.xhr.send({
url: "/cart-api",
method: "POST",
body: JSON.stringify(entry)
}).then(function() {
me._refresh();
}, function() {
console.error("POST failed");
});
Il messaggio di errore indica che send
è tornato undefined
anziché un oggetto Promise valido.
Quindi la mia domanda è questa: è un elemento <iron-request>
effettivamente riutilizzabile? Devo fare qualcosa per aggiornarlo o reinizializzarlo?
UPDATE
Grazie a @Zikes Ho aggiornato il mio codice come segue:
<iron-ajax id="ajaxGet" auto
url="/cart-api/"
last-response="{{ajaxResponse}}"
handle-as="json">
</iron-ajax>
<iron-ajax id="ajaxPost" url="/cart-api" method="POST" on-response="_refresh"></iron-ajax>
<iron-ajax id="ajaxDelete" method="DELETE" on-response="_refresh"></iron-ajax>
insertEntry: function(entry) {
this.$.ajaxPost.body = JSON.stringify(entry);
this.$.ajaxPost.generateRequest();
},
_handleRemove: function(e) {
var entry = e.currentTarget.entry;
this.$.ajaxDelete.url = "/cart-api/" + entry.id;
this.$.ajaxDelete.generateRequest();
},
_refresh: function() {
this.$.ajaxGet.generateRequest();
},
Grazie ma può iron-ajax essere utilizzato per richieste non GET? –
Sì! Ha un parametro 'method': https://github.com/PolymerElements/iron-ajax/blob/master/iron-ajax.html#L83 – Zikes
Basta disattivare' auto', altrimenti si accenderà la richiesta immediatamente quando un modifiche di un singolo parametro (a meno che non sia nel mezzo di un antirimbalzo). La modifica di più parametri può comportare richieste multiple incomplete. – Zikes