#javascript #ajax #polymer
#javascript #ajax #polymer
Вопрос:
В моем шаблоне есть два элемента core-ajax. «Кажется», что обработчик событий, который находится на первом ядре-ajax, запускается в результате ОБОИХ завершений ядра. Вот что я получил..
<polymer-element name="pmg-report" attributes="columnSetup">
<template>
<div id="rptTitle" class="rpt-page-head">This is the Report Page</div>
<core-ajax auto url="/reports/report1b.txt"
params=''
handleas="text"
on-core-response="{{handleRptSetupResponse}}"
</core-ajax>
<core-ajax auto url="/webservices/reportsws.asmx/Get_Report1"
params=''
handleas="json"
on-core-response="{{handleGetReportResponse}}"
method="post"
contenttype="application/json; charset=utf-8">
</core-ajax>
<div class="pgm-test">
<template repeat="{{group in groups}}">
<pmg-group groupid={{group.id}}></pmg-group>
</template>
</div>
</template>
<script>
Polymer('pmg-report', {
handleRptSetupResponse: function (e) {
var theR = e.detail.response;
console.log('handleRptSetup->', e.detail.response);
var jsColSetup = JSON.parse(theR);
rptSetup = jsColSetup;
},
handleGetReportResponse: function (e) {
var theData = JSON.parse(e.detail.response.d);
var cols = Object.keys(theData[0]);
//Setup global Columns list
for (cnt = 0 ; cnt < cols.length ; cnt ) {
columns.push({ name: cols[cnt] });
}
//Process data.
for (cnt = 0; cnt < theData.length; cnt ) {
theData[cnt].id = cnt 1;
if ( cnt < 100 ) {
dispRows.push(theData[cnt]);
}
}
console.log('dispRows.length (rpt)->', dispRows.length);
this.groups = [
{ id: 1 },
{ id: 2 }
];
this.$.rptTitle.innerHTML = rptSetup.title;
},
…
Итак, что со мной происходит, так это то, что когда выполняется метод «handleRptSetup», когда происходят оба вызова ajax-ядра. «handleGetReportResponse» выполняется только один раз. Второй e.detail.response, возвращаемый в «handleRptSetup», предназначен для «handleGetReportResponse». «handleGetReportResponse» выполняется только один раз и получает правильный ответ.
Итак, мне интересно, является ли это ошибкой? Или я чего-то здесь не понимаю?
Комментарии:
1. В вашем первом
<core-ajax
отсутствует закрытие>
. Проверьте свой текущий код на наличие этой проблемы.2. Дерьмо Холли… Мораль этой истории: не отправляйте вопросы в конце дня! Большое вам спасибо, что нашли мою глупость!