Onko “ mahdollista löytää ” aura: id aura: id: n sisällä?

Minulla on komponentti, johon rakennan lightning:recordEditForm -kenttää käyttämällä kenttiä, jotka perustuvat eri kenttäjoukkoihin, jotka näyttävät jotain tällaista:

<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> 

Kun soitat find() numeroon aura:id joka tapahtuu useita kertoja, saat takaisin joukon kaikkea aura:id. Jos halusin käyttää elementtiä jossakin find() -puhelulleni palautetusta elementistä, voinko tehdä sen aura:id mainitun alielementin kuten alla, funktiossa 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") ); <== ? } ); } }) 

Kommentit

  • Jotain cmp.find("formItems").find("field").get("v.value");?
  • Kyseinen rivi heittää virheen, koska (.. luulen ..) minun täytyy käytä silmukkaa cmp.find("formItems") -sivulla, koska siinä on useita elementtejä. aura:id.

Vastaa

Näyttää siltä, että tämä ”sisäkkäinen löytö” (sinänsä) ei ole mahdollista. Päätin luoda dynaamisesti kukin lightning:layoutItem ja kukin vastaavasti sisäkkäin lightning:inputField init komponenttini käsittelijä. Tämä antoi minulle mahdollisuuden määrittää aura:id, kun luotin kunkin yksittäisen komponentin.

Vastaa

sinun tulisi käyttää foreach lightning:inputField auratunnistetta varten. Sitten saat joukon syötekenttiä cmps, tee sitten foreach ja saat arvot kuten yritin alla

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") ); <== ? } ); } 

Kommentit

  • Tämä toimii tilanteissa, joissa käyttötapa on täsmälleen sama kuin esimerkkini. Valitettavasti (ja anteeksi, jos tämä oli huonoa käytäntöä), esimerkkini ei ole tarkka käyttötapaukseni. Yritin yksinkertaistaa sitä löytääksesi vastauksen ilman liikaa hölynpölyä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *