Adobe CQ / AEM - 触发afteredit处理程序

时间:2016-02-03 20:14:22

标签: javascript cq5 aem

当我选择" OK"在组件编辑器对话框中,假设我已经设置了_cq_editConfig.xml,组件会自行重绘:

    <cq:listeners
    jcr:primaryType="cq:EditListenersConfig"
    afteredit="REFRESH_SELF"/>

我想做的是触发&#34; afteredit&#34;通过javascript。我的情况是内容已经更改,作者应该有渲染组件的更新视图,但我不知道如何重新加载整个页面或打开和关闭编辑对话框。据推测,由&#34; REFRESH_SELF&#34;表示的功能。可以调用常量,但我不知道如何将常量追溯到函数。

有谁知道如何从javascript触发afteredit?

2 个答案:

答案 0 :(得分:3)

REFRESH_SELF常量映射到方法CQ.wcm.EditBase.refreshSelf。您可以使用crxde转至/libs/cq/ui/widgets/source/widgets/wcm/EditBase.Listeners.js找到它的定义。要通过javascript触发它,首先需要具有可编辑对象,然后调用该方法。例如:

    var ed = CQ.WCM.getEditable('/path/to/the/object/in/page');
    ed.refreshSelf();

答案 1 :(得分:0)

@jwepurchase如果您想要做的就是在对话框编辑或关闭后重新加载页面,您可以更改默认&#34; REFRESH_SELF&#34; &#34; afteredit&#34;的参数到&#34; REFRESH_PAGE&#34;。它来自OOTB,编写脚本来实现这一功能是不必要的。

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:actions="[text: Banner Tile,edit,delete,insert]"
cq:dialogMode="floating"
cq:disableTargeting="{Boolean}true"
jcr:primaryType="cq:EditConfig">
<cq:listeners
    jcr:primaryType="cq:EditListenersConfig"
    afterdelete="REFRESH_PAGE"
    afteredit="REFRESH_PAGE"/>
</jcr:root>

参考 - &gt;向下滚动到本页末尾https://docs.adobe.com/docs/en/cq/5-5/developing/components/edit_config.html