AEM - Как передать данные в компонент - PullRequest
0 голосов
/ 26 сентября 2019

Обычно компонент AEM извлекает свои данные из узла JCR, но мне было интересно, можно ли передать ему данные в HTL.Конечно, есть data-sly-resource, но, насколько я знаю, таким образом вы можете пропустить только узел JCR.

Так что в реальном случае у меня есть данные в модели, которые получены из других источников.Все же я хотел бы использовать существующие компоненты.Мне известно, что данные должны, по крайней мере, соответствовать модели типов компонентов.

Но что, если компонент, который я хотел бы использовать, использует модель, в которую введены данные, например

* 1007?*

Так что в моих упрямых мыслях должна быть возможность каким-то образом передать массив строк, например

<div data-sly-resource="${myModel.aStringArray @ resourceType='my/component' }"></div>

Но, как упоминалось выше, это, похоже, предназначено только для прохождения узлов.

Есть ли способ выполнить передачу данных непосредственно компоненту (кроме создания шаблона)?

1 Ответ

0 голосов
/ 29 сентября 2019

Вы можете передавать дополнительную информацию в виде атрибутов запроса или селекторов

Селекторы

Селекторы - это самые простые способы передачи простой информации.Это массив строк, которые можно передать.Это весьма полезно для данных, которые могут выступать в качестве флагов, например:

  • Вариант / Режим компонента
  • Индекс компонента в списке, если он включен в цикл.
  • Идентификатор родителя при создании таких вещей, как аккордеон, вкладки

Этот подход является злоупотреблением селекторами, но ИМХО, пока вы знаете, что делаете, этого не должно бытьсерьезная проблема.

<article data-sly-resource="${'path/to/resource' @ selectors=['s1', 's2']}"></article>

Вы можете добавлять, заменять или удалять селекторы, включая компонент.Ознакомьтесь с документацией по синтаксису.https://docs.adobe.com/content/help/en/experience-manager-htl/using/htl/block-statements.html#resource

Атрибуты запроса

Этот параметр позволяет добавлять настраиваемые атрибуты запроса к запросу компонента.Это может использоваться для передачи объектов в качестве параметров компоненту при их включении.

Это стандартные атрибуты http-запроса с убедительной областью видимости их для конкретного случая включения сценария / ресурса.Чтобы использовать это, вам в конечном итоге понадобится модельный класс или use-js, поскольку существует небольшая поддержка для составления данных, которые будут переданы визуально.

<sly data-sly-use.settings="com.adobe.examples.htl.core.hashmap.Settings" 
        data-sly-include="${ 'productdetails.html' @ requestAttributes=settings.settings}" />

https://docs.adobe.com/content/help/en/experience-manager-htl/using/htl/block-statements.html#request-attributes

...