我的闪电组件(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的等级重要吗?
答案 0 :(得分:0)
该框架支持捕获,冒泡和默认阶段,以传播应用程序事件。
这意味着,为了接收来自已触发事件的信号,它应该具有一个公共组件(不考虑层次结构)。
就像此Application Event Example一样,它在底部显示它们具有默认阶段的公共接触点(均包含在单个闪电应用程序中),以通过平台的原始处理行为来处理事件
我建议有一个公共的父组件,并在其中声明notifier事件。