我在与嵌套组件通信时遇到问题。我希望组件能够在嵌套组件的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!');
}
})这不起作用。我尝试了与放置在超级组件上的嵌套组件完全相同的代码,它在perfectly.The超级组件接收事件时起作用。但是嵌套的组件不能。我认为这只与事件冒泡有关(尽管文档中确实说这只是组件事件的情况,而不是应用程序事件)。
所以我在网上读到的另一个选择是使用。我试过这样做,但这对于与嵌套组件对话也不起作用。
父组件如何触发嵌套组件上的方法?
谢谢
发布于 2016-02-10 08:33:35
问题是我使用的是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>感谢@MohithShrivastava解决了这个问题!
https://stackoverflow.com/questions/35302025
复制相似问题