首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aura.js闪电组件:从超级/父组件触发嵌套/子组件的方法?

Aura.js闪电组件:从超级/父组件触发嵌套/子组件的方法?
EN

Stack Overflow用户
提问于 2016-02-10 04:55:57
回答 1查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
<!-- 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超级组件接收事件时起作用。但是嵌套的组件不能。我认为这只与事件冒泡有关(尽管文档中确实说这只是组件事件的情况,而不是应用程序事件)。

所以我在网上读到的另一个选择是使用。我试过这样做,但这对于与嵌套组件对话也不起作用。

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-02-10 08:33:35

这个问题在这里得到了回答:https://salesforce.stackexchange.com/questions/108544/lightning-components-firing-a-nested-child-components-methods-from-the-super-p

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

代码语言:javascript
复制
//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解决了这个问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35302025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档