Je možné “ najít ” aura: id v rámci aura: id?

Mám komponentu, kde stavím lightning:recordEditForm pole využívající různé sady polí, které vypadají něco takového:

<aura:component> <aura:attribute name="fieldApiNames" type="List" /> <aura:attribute name="showSpinner" type="Boolean" default="true" /> <aura:if isTrue="{!v.showSpinner}"> <lightning:spinner alternativeText="Loading..." /> </aura:if> <lightning:recordEditForm onload="{!c.handleLoad}" objectApiName="Account"> <lightning:messages /> <lightning:layout multipleRows="true"> <aura:iteration items="{!v.fieldApiNames}" var="api"> <lightning:layoutItem aura:id="formItems" size="6"> <div aura:id="top-div" /> <lightning:inputField aura:id="field" fieldName="{!api}" /> <div aura:id="bottom-div" /> </lightning:layoutItem> </aura:iteration> </lightning:layout> </lightning:recordEditForm> <lightning:button title="Show Field Values" onclick="{!c.handleButton}" /> </aura:component> 

Když zavoláte find() na aura:id který se vyskytuje vícekrát, získáte zpět vše se aura:id. Pokud bych chtěl získat přístup k prvku v těle jednoho z prvků vrácených při mém find() volání, mohl bych to udělat pomocí aura:id uvedeného dílčího prvku, jak je uvedeno níže, ve funkci handleButton?

({ handleLoad : function(cmp, evt, helper) { cmp.set( "v.showSpinner", false ); }, handleButton : function(cmp, evt, helper) { var first = cmp.get("v.fieldApiNames")[0]; cmp.find("formItems").forEach( function(item) { alert( item.find("field").get("v.value") ); <== ? } ); } }) 

Komentáře

  • Něco jako cmp.find("formItems").find("field").get("v.value");?
  • Tento konkrétní řádek vyvolá chybu, protože (.. myslím ..) musím použijte smyčku na cmp.find("formItems"), protože s tím bude

.

Odpověď

Zdá se, že tento „vnořený nález“ (jako takový) není možný. Rozhodl jsem se dynamicky vytvořit každý lightning:layoutItem a každý vnořený lightning:inputField do init obslužný program pro můj komponent. To mi umožnilo přiřadit každou jednotlivou součást aura:id.

Odpovědět

měli byste použít foreach pro lightning:inputField aura id, pak získáte řadu cmd vstupních polí, pak proveďte foreach a získejte hodnoty jako to, co jsem zkoušel níže

controller.js

 handleButton : function(cmp, evt, helper) { var first = cmp.get("v.fieldApiNames")[0]; cmp.find("field").forEach( function(itemcmp) { alert( itemcmp.get("v.value") ); <== ? } ); } 

Komentáře

  • To by fungovalo ve scénářích, kde je případ použití přesně stejný jako můj příklad. Bohužel (a omlouvám se, pokud to byla špatná praxe), můj příklad není můj přesný případ použití. Snažil jsem se to zjednodušit, abych našel odpověď bez přílišné hlouposti.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *