事件触发但未由组件处理

时间:2019-07-26 11:58:54

标签: javascript html salesforce salesforce-lightning

我的闪电组件(salesforce)应用程序的其中一个组件中包含以下代码:

<aura:registerEvent name="openSidebarEvent" type="c:OpenSidebarEvent" />

Component事件如下所示:

<aura:event type="APPLICATION" description="Event template">
    <aura:attribute name="postId" type="String" />
    <aura:attribute name="type" type="String" />
</aura:event>

这就是我从同一组件触发事件的方式:

var appEvent = $A.get("e.c:openSidebarEvent");
        appEvent.setParams({ postId: selected_feedId });
        appEvent.setParams({ type: "post" });
        appEvent.fire();

现在,接收器组件具有以下功能:

<aura:handler event="c:OpenSidebarEvent" action="{!c.highlightPost}" />

 highlightPost: function(component, event, helper) {
    console.log("application event handle");
  }

因此基本上从不调用此组件上的highlightPost()。

但是我在另一个组件中确实有完全相同的东西,并且在那里工作。不能完全确定为什么这在此组件上不起作用? cmps的等级重要吗?

1 个答案:

答案 0 :(得分:0)

基于Application Events

  

该框架支持捕获,冒泡和默认阶段,以传播应用程序事件。

这意味着,为了接收来自已触发事件的信号,它应该具有一个公共组件(不考虑层次结构)。

就像此Application Event Example一样,它在底部显示它们具有默认阶段的公共接触点(均包含在单个闪电应用程序中),以通过平台的原始处理行为来处理事件

我建议有一个公共的父组件,并在其中声明notifier事件。

enter image description here