【问题标题】:How to change component's name dynamically in Adobe Experience Manager (AEM)如何在 Adob​​e Experience Manager (AEM) 中动态更改组件名称
【发布时间】:2017-01-13 08:04:31
【问题描述】:

我创建了一个带有对话框的组件,在 cq:action 数组中,最后一个值包含像“componentName”这样的静态文本。

用户可以点击“编辑”打开带有文本字段的对话框。

我的要求是将 cq:action 文本从“componentName”更改为 "componentName - textFieldValue"。

我该怎么做?

【问题讨论】:

  • '我的要求是将 cq:action 文本更改为 "componentName - textFieldValue"' 这不是很清楚。您能否详细说明更改 cq:action 文本的含义?
  • 转到docs.adobe.com/docs/en/cq/5-5/developing/components/… .......在那篇文章中转到标题“使用 cq:EditConfig 属性进行配置”......cq:actions 是一个字符串数组,我想根据对话框传递的值更改它的属性
  • cq:EditConfig->cq:actions 值不能被组件对话框字段值访问。字段值存储为页面上组件实例下的节点。 cq:actions 只有在定义对话框时才能修改。请问,你想在这里做什么?
  • 我有一个页面,其中我多次使用相同的组件,并且我在每个对话框中传递不同的值,因此通过更改 cq:action 中的文本,我可以在不打开对话框的情况下区分那些每一个....所以cq:actions不能动态改变????
  • cq:actions 只能有一定的语义,任意值都行不通。你绝对不能动态地改变它们。为什么在渲染组件时不在对话框中显示字段的值?这样就不用每次都打开对话框查看值了。

标签: aem


【解决方案1】:

由于问题上的 cmets 表明,此标签旨在配置为特定组件的静态文本。实现不同动作的 ExtJs 类是 CQ.wcm.EditBase https://docs.adobe.com/docs/en/cq/5-6/widgets-api/index.html?class=CQ.wcm.EditBase。我看不到任何访问器与操作交互,因为它们是静态定义的。即使在 CQ.wcm.EditRollover 类中,您也可以获得初始配置,但它是只读的。您可以尝试深入了解它们是如何实现的,但名称并非旨在动态显示。

通常您会定义一个新组件来扩展原始组件并更改名称。显然,这不适用于大量名称值。

【讨论】:

    【解决方案2】:

    如果您的主要目标是根据编写的值区分组件的多个实例,并且与 cq:actions 无关,您可以简单地在编辑模式下渲染必要的值,以便仅在编写时显示。

    假设您的组件中的文本字段有一个名称'./text',您可以执行以下操作:

    <sly data-sly-test="${wcmmode.edit}">
        ${properties.text} <!-- /* Add anything else that you want to be displayed */ -->
    </sly>
    

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多