Я создал пользовательский элемент Polymer 3 pm-builder
, который используется для создания списка раскрывающихся меню для плана счетов, в котором план счетов разделен сегментом, т.е. стоимостью, активами, обязательствами и т. Д. c. Этот элемент будет извлекать план счетов из базы данных по уровням, от уровня 1 до уровня 12.
Когда у меня есть этот элемент Polymer более одного раза, они, кажется, мешают друг другу в отношении их железо - ajax звонки.
pm-builder
...
static get template()
{
return html`
...
<iron-ajax auto id="getTier1"
url="[[_getUrl('COA/GetTier1')]]"
body="[[_getTier1Params()]]"
method="POST"
content-type="application/json"
handle-as="json"
last-response="{{lists.tier1}}">
</iron-ajax>
...`;
}
...
static get properties()
{
return {
...
lists:
{
type: Object,
value:
{
tier1: [],
tier2: [],
tier3: [],
tier4: [],
tier5: [],
tier6: [],
tier7: [],
tier8: [],
tier9: [],
tier10: [],
tier11: [],
tier12: []
}
},
segment:
{
type: String
}
...
};
}
...
_getTier1Params()
{
var obj = { segment: this.segment };
return obj;
}
...
pm-use-builder
...
<div class="level1">Assets</div>
<pm-mscoa-builder id="assetsBuilder"
segment="assets">
</pm-mscoa-builder>
<div class="level1">Liabilities</div>
<pm-mscoa-builder id="liabilitiesBuilder"
segment="liabilities">
</pm-mscoa-builder>
...
Когда два компилятора загружаются, они правильно вызывают функцию GetTier1
со своим соответствующим параметром, но когда возвращаются вызовы iron- ajax, только значение assetsBuilder
lists.tier1
устанавливается со значением iron- ajax который вернулся последним, даже если это железо - ajax было от liabilitiesBuilder
.
Я пытался дать железу - ajax вызов уникального идентификатора (getTier1-assets
и getTier1-liabilities
), но это не имело никакого значения.
РЕДАКТИРОВАТЬ
Чтобы подтвердить это, я реализовал функцию печати внутри pm-builder
, которая печатает первый список, lists.tier1
. Результат выглядит следующим образом:
========== PRINT ==========
this.id: assetsBuilder
this.segment: assets
this.lists.tier1:
tier1[0].Name: Community and Social Services
tier1[1].Name: Energy Sources
tier1[2].Name: Environmental Protection
tier1[3].Name: Executive and Council
tier1[4].Name: Finance and Administration
tier1[5].Name: Health
tier1[6].Name: Housing
tier1[7].Name: Internal Audit
tier1[8].Name: Other
tier1[9].Name: Planning and Development
tier1[10].Name: Public Safety
tier1[11].Name: Road Transport
tier1[12].Name: Sport and Recreation
tier1[13].Name: Waste Management
tier1[14].Name: Waste Water Management
tier1[15].Name: Water Management
========== PRINT ==========
this.id: liabilitiesBuilder
this.segment: liabilities
this.lists.tier1:
tier1[0].Name: Community and Social Services
tier1[1].Name: Energy Sources
tier1[2].Name: Environmental Protection
tier1[3].Name: Executive and Council
tier1[4].Name: Finance and Administration
tier1[5].Name: Health
tier1[6].Name: Housing
tier1[7].Name: Internal Audit
tier1[8].Name: Other
tier1[9].Name: Planning and Development
tier1[10].Name: Public Safety
tier1[11].Name: Road Transport
tier1[12].Name: Sport and Recreation
tier1[13].Name: Waste Management
tier1[14].Name: Waste Water Management
tier1[15].Name: Water Management
Список в assetsBuilder
должен содержать только 3 элемента, и ни один из них не соответствует именам, которые должны быть там.