В Polymer, возможно ли использовать массив параметров для выполнения вызова iron-ajax?
Так что я представляю массив параметров, которые у меня есть, которые содержат список идентификаторов, давайте назовем это Array1. Эти идентификаторы будут использоваться в качестве параметров для вызова ajax по тому же URL-адресу. Когда он делает вызов, я хочу вытолкнуть некоторую информацию из вызова ajax в общий массив (Array2), а затем перейти к следующему идентификатору в Array1. Возможно ли это реализовать с помощью Polymer? И если да, то с чего мне начать?
Код:
<iron-ajax id="ajax"
auto="false"
url='http://url.com/details?Id='
handle-as="json"
on-response="handleResponse"></iron-ajax>
<script>
var playerData = [];
Polymer({
is: 'my-team',
properties: {
},
attached: function () {
for (var i = 0; i < array.length; i++) {
this.$.ajax.url = 'http://url.com/details?Id=' + currentTeam[i];
console.log(array[i]);
}
},
handleResponse: function (r) {
// do something;
playerData.push(r.detail.response);
}
});
</script>
1 ответ
Решение
Если я правильно понял, я думаю, что это будет работать. Возможно, это не самый эффективный способ сделать это, но работа будет выполнена.
<template is="dom-repeat" items="{{array1}}" as="id">
<iron-ajax auto
url='http://website.com/{{id}}'
handle-as="json"
on-response="handleResponse">
</iron-ajax>
</template>
Добавить функцию handleReponse
handleResponse: function(r) {
var response = r.detail.response;
// do something;
},
Редактировать, основываясь на предложении jdepypere (No Dom-Repeat):
<iron-ajax id="ajax" url='http://website.com/'
handle-as="json"
on-response="handleResponse">
</iron-ajax>
attached: function() {
for (var i = 0; i < this.array1.length; i++) {
this.$.ajax = 'http://website.com/' + this.array1[i];
}
},
handleResponse: function(r) {
var response = r.detail.response;
// do something;
},
Edit2 добавил метод GenerateRequest (сейчас работает):
<iron-ajax id="ajax" url='http://website.com/'
handle-as="json"
on-response="handleResponse">
</iron-ajax>
properties: {
array1: {
value: ['123', '123555', '235']
}
},
attached: function() {
console.log('attached');
for (var i = 0; i < this.array1.length; i++) {
console.log(i);
this.$.aj.url = 'http://website.com/' + this.array1[i];
this.$.aj.generateRequest();
}
},
handleResponse: function(r) {
var response = r.detail.response;
console.log('handle');
// do something;
},