Aura.js Lightning组件:从超级/父组件中激活嵌套/子组件的方法?

时间:2016-02-09 20:55:57

标签: javascript salesforce aura.js aura-framework

我在与嵌套组件进行通信时遇到问题。我希望一个组件能够在嵌套组件的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!');
  }
})

这不起作用。我尝试了与超级超级组件上的嵌套组件相同的完全代码,并且它工作得很好。超级超级组件收到了该事件。但嵌套组件无法做到。我认为这与仅冒泡的事件有关(尽管文档确实说这只是组件事件的情况,而不是应用程序事件)。

所以我在网上看到的其他选项正在使用。我尝试过这样做,但这对于与嵌套组件说话也不起作用。

父组件如何导致嵌套组件上的方法触发?

谢谢

1 个答案:

答案 0 :(得分:0)

此问题在此处得到解答:https://salesforce.stackexchange.com/questions/108544/lightning-components-firing-a-nested-child-components-methods-from-the-super-p

问题是我使用的是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解决这个问题!