Javascript Aura.js Lightning Components:触发嵌套/子组件';来自超级/父组件的方法?
我在与嵌套组件通信时遇到问题。我希望组件能够在嵌套组件的controller.js(或helper)中运行方法。我尝试了两个项目和via,但都没有成功。以下是示例标记: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
<!-- 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解决了这个问题