Javascript Aura.js Lightning Components:触发嵌套/子组件';来自超级/父组件的方法?

Javascript Aura.js Lightning Components:触发嵌套/子组件';来自超级/父组件的方法?,javascript,salesforce,aura.js,aura-framework,Javascript,Salesforce,Aura.js,Aura Framework,我在与嵌套组件通信时遇到问题。我希望组件能够在嵌套组件的controller.js(或helper)中运行方法。我尝试了两个项目和via,但都没有成功。以下是示例标记: <!-- myEvent.evt --> <aura:event type="APPLICATION"> </aura:event> <!-- super-component --> <aura:component> <aura:registerEven

我在与嵌套组件通信时遇到问题。我希望组件能够在嵌套组件的controller.js(或helper)中运行方法。我尝试了两个项目和via,但都没有成功。以下是示例标记:

<!-- myEvent.evt -->
<aura:event type="APPLICATION">
</aura:event>

<!-- super-component -->
<aura:component>
    <aura:registerEvent name="myEventName" type="c:myEvent"/>
    <c:my_Nested_Component />
    <ui:button press="{!fireEvent}"
<aura:component>



//super-component_controller.js
({
  fireEvent: function(component){
    var myEvent = component.getEvent("myEventName");
    myEvent.fire();
    console.log('event fired');
  }
})

------------------------------------------

<!-- nested-component -->
<aura:component>
    <aura:handler name="myEventName" event="c:c:myEvent" action="{!c.gotEvent}" />

<aura:component>


//nested-component_controller.js
({
  gotEvent: function(component, event){
    console.log('received event!');
  }
})


这里回答了这个问题:

问题是我使用的是component.getEvent()而不是$A.get(),这是应用程序级事件所必需的。此外,注册事件的名称不是从处理程序引用事件的方式,而是使用它的实际文件名,如下所示:

//super-component_controller.js
 ({
  fireEvent: function(component){
  var myEvent = $A.get("e.c:myEvent");
  myEvent.fire();
  console.log('event fired');
  }
})

<!-- nested-component -->
<aura:component>
   <aura:handler event="c:myEvent" action="{!c.gotEvent}" />
<aura:component>
//super-component\u controller.js
({
fireEvent:函数(组件){
var myEvent=$A.get(“e.c:myEvent”);
myEvent.fire();
log('event-fired');
}
})
感谢@MohithShrivastava解决了这个问题