Sådan kaldes underordnet komponent controller-funktion / hjælper fra Parent Component Controller

Jeg har krav om at ringe til en underordnet controller-funktion fra overordnet controller, når begivenheden sker i forældresiden .

for f.eks.

ABC er overordnet komponent og DCE er underordnet komponent, denne underordnede komponent har Span of Text-tag og X-symbol. når jeg klikker på x, ryddes værdien ved hjælp af underordnet controller. ABC-forældrekomponent har formelement, og underordnet komponent er en af i form.

Mit krav er at rydde denne underordnede komponentværdi, når der klikkes på forældrekomponentknappen.

her er under eksempelkode for hvad jeg prøver, fordi jeg ikke kan sende den aktuelle kode her

ParentComponent.cmp

 <aura:registerEvent name="clrValues" type="c:ClearValues"/> <div> <c:ChildComponent textValue="test"/> <ui:button label="Save"/> <ui:button label="Clear" press="{!c.clear}"/> </div> </aura:component> 

ParentController.js

({ clear : function(component, event, helper) { var evtFire = component.getEvent("clrValues"); evtFire.fire(); } }) 

ClearValues.evt

<aura:event type="APPLICATION" description="Event template" /> 

ChildComponent.cmp

<aura:component > <aura:handler name="setValues" event="c:ClearValues" action="{!c.clear}"/> <aura:attribute name="textValue" type="String" default="test"/> <div > <ui:inputText label="Expense Name" value="{!v.textValue}" aura:id="input1"/> </div> </aura:component> 

ChildController.js

({ clear : function(component, event, helper) { helper.clearValues(component,event); } }) 

Kommentarer

  • Medmindre du angiver koden, er det svært at hjælpe dig
  • Mohit, tilføjede koden, jeg kan ikke sende min oprindelige kode, men jeg har givet eksemplet, hvad jeg forsøgte at opnå.

Svar

Handlernavnet i din underordnede komponent skal matche det registrerede navn i den overordnede komponent. dvs. at handler i underordnet komponent skal være sådan:

 <aura:handler name="clrValues" event="c:ClearValues" action="{!c.clear}"/> 

–UPDATE –

Jeg tror, at en bedre tilgang til forældre-til-barn-kommunikation er at bruge <aura:method> som angivet i lyndokumenter og her

For at gøre dette skal du definere en metode i underordnet komponent som denne:

 <aura:method name="sampleMethod" action="{!c.clear}" access="PUBLIC"> 

Du skal derefter have et id, når du henviser det inde i din overordnede komponent som denne:

 <c:ChildComponent textValue="test" aura:id="cComp"/> 

Derefter skal du i den klare metode til overordnet komponent påberåbe sig underordnet metode som denne:

 var childCmp = component.find("cComp") childCmp.sampleMethod(); 

Kommentarer

  • Det gælder kun for hændelse på komponentniveau, ikke for en applikationshændelse.
  • hmm at ' er sandt. Jeg har ikke ' bemærket, at dette er en applikationsbegivenhed. @Raj_SFDC, hvorfor kan ' ikke gøre din begivenhed til en komponentbegivenhed?

Svar

Programhændelseshåndterer bør ikke indeholde name -attribut kun event og action attribut er nok som nævnt her .

Sådan skal en applikationshændelse affyres i din klare metode:

({ clear : function(component, event, helper) { $A.get("e.c:clrValues").fire(); } }) 

For mere information, se afsnittet om applikationsbegivenhed i doc .

Kommentarer

  • Intet held med det også, min antagelse er, at vi ikke kan håndtere begivenhed i barn fra forælder. bekræft venligst
  • @Raj_SFDC vi kan affyre en ansøgningshændelse fra forældren til barnet. Når det er sagt, gør du det forkert. Jeg har opdateret mit svar, se på det.
  • Jeg har et spørgsmål her ovenfra [$ A.get (" ec: clrValues ")], hvordan få attributværdi.
  • henviser du til begivenhedsparametre? Hvis det er tilfældet, kan du indstille det ved hjælp af $A.get("e.c:clrValues").setParams({'message':'test'}) og affyre begivenheden, så i håndteringsmetoden kan du bruge $A.get("e.c:clrValues").getParam('message') for at få værdien tilbage.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *