Adobe CQ/AEM - 触发器后编辑处理程序



当我在组件编辑器对话框中选择"确定"时,组件会重新绘制自身,假设我已经设置了_cq_editConfig.xml:

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

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

有谁知道如何从javascript触发后编辑?

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();

@jwepurchase如果您只想在对话框编辑或关闭后重新加载页面,则可以将"afteredit"的默认"REFRESH_SELF"参数更改为"REFRESH_PAGE"。它来自 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>

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

最新更新