我在与嵌套组件进行通信时遇到问题。我希望一个组件能够在嵌套组件的controller.js(或helper)中运行一个方法。我已经尝试了两个事件和通过,没有运气。以下是示例标记:
<!-- 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!');
}
})
这不起作用。我尝试了与超级超级组件上的嵌套组件相同的完全代码,并且它工作得很好。超级超级组件收到了该事件。但嵌套组件无法做到。我认为这与仅冒泡的事件有关(尽管文档确实说这只是组件事件的情况,而不是应用程序事件)。
所以我在网上看到的其他选项正在使用。我尝试过这样做,但这对于与嵌套组件说话也不起作用。
父组件如何导致嵌套组件上的方法触发?
谢谢
答案 0 :(得分:0)
问题是我使用的是component.getEvent()而不是$ A.get(),这是应用程序级事件所必需的。此外,注册事件的名称不是从处理程序引用事件的方式,而是使用它的实际文件名,如下所示:
COPY ldap.cer $JAVA_HOME/jre/lib/security
RUN \
cd $JAVA_HOME/jre/lib/security \
&& keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ldapcert -file ldap.cer
感谢@MohithShrivastava解决这个问题!