【问题标题】:Color Picker for AEM ComponentAEM 组件的颜色选择器
【发布时间】:2025-12-01 06:20:05
【问题描述】:

我正在尝试向我的 AEM 组件添加颜色选择器,以便用户可以在组件对话框中设置颜色。以前它只是一个带有文本选项的选择列表...

<selectList  jcr:primaryType="cq:Widget" fieldLabel="Color" name="./color1" type="select" xtype="selection" options="/etc/designs/my-project/colors.json" />

我想使用ColorMenuColorPalette 经过反复试验,我在组件对话框中有以下ColorPalette...

<colorMenu jcr:primaryType="cq:Widget" fieldLabel="Color" xtype="colorpalette" name="./color2" colors="" plugins="customColorPlugin"/>

customColorPlugin 函数设置颜色数组。 UI 类型的作品和调色板有可供选择的颜色。

但我不知道如何处理单击事件以将所选颜色放入我的 AEM 组件属性中。

对话框打开时出现以下 JS 控制台错误

未捕获的类型错误:未定义不是函数
CQ.Ext.layout.AnchorLayout.CQ.Ext.extend.onLayout CQ.Ext.layout.ContainerLayout.CQ.Ext.extend.layout CQ.Ext.layout.ContainerLayout.CQ.Ext.extend.runLayout

当我点击颜色时我会得到这个

未捕获的类型错误:无法读取 null 的属性“addClass” CQ.Ext.ColorPalette.CQ.Ext.extend.select CQ.Ext.ColorPalette.CQ.Ext.extend.handleClick

【问题讨论】:

    标签: extjs aem


    【解决方案1】:

    Cannot read property 'addClass' of null 当您的插件提供的颜色的十六进制代码为 小写 时发生,它显示颜色正常但点击时中断。只需将它们转换为大写即可。您还可以查看colorfield xtype。

    【讨论】:

    • 鉴于 dialog.xml 小部件,我需要将 HEX 转换为类名。我有一个更改功能,可以在更改色域时运行。但是我将如何更新不同的小部件(隐藏的文本字段)? ''
    • 如果 clrClassName 是 colorfield 的兄弟,在选择更改中获取对 color 字段的引用并使用下一个兄弟 () 方法获取隐藏字段。然后在其上使用 setValue() 方法来更新类名
    • 太棒了!谢谢!
    最近更新 更多