2015-01-30 4 views
0

У меня есть компонент Sightly с (JavaScript) UseAPI model на сайте Adobe AEM/CQ.Передать переменную от модели компонента до диалога автора

В модели у меня есть переменная, которая вычисляется, когда компонент загружается и не сохраняется в JCR (скажем, это случайная строка).

Когда автор открывает диалоговое окно интерфейса Granite/Touch UI, пользовательский компонент гранитного пользовательского интерфейса визуализируется с помощью JSP. JSP имеет доступ к области компонента в JCR, но, насколько я могу судить, он не имеет доступа к свойствам, возвращаемым моделью JavaScript при рендеринге компонента.

Как передать/сохранить эту переменную «случайная строка» из Sightly/JavaScript UseAPI, чтобы она могла быть доступна JSP диалога?

Переменная контекстно-зависимая, поэтому я не хочу ее хранить в постоянном месте, таком как JCR. Хорошим примером может быть уникальный идентификатор для внешней веб-службы, который уникален для этого конкретного рендеринга компонента.

+0

Вы просто пытаетесь отобразить вычисленное значение в диалоговом окне? Потому что нет смысла редактировать чисто вычисленное значение. –

+0

@ITGumby Предполагаемое использование больше по линиям передачи значения по умолчанию или установки в диалоговом окне, в отличие от значения, которое редактируется –

ответ

0

Я могу придумать несколько подходов, с разной степенью применимости:

  1. Диалог поля emptyText свойство: Это просто показывает неактивна/намекая текст и не устанавливает каких-либо содержание, которое, возможно, может быть вынесено.
  2. Диалоговое поле defaultValue Свойство: Это выглядит очень заманчиво, но я не помню, чтобы у него был успех.
  3. Обработчики событий Dialog: (добавление JavaScript внутри XML определения диалога). Я не являюсь поклонником этого подхода, поскольку неясно, как и где происходит волшебство. Но можно обновлять/заполнять поля при загрузке диалогового окна или сохранять диалог.
  4. Компонент cq:template: как шаблон страницы, вы можете предоставить контент по умолчанию при перетаскивании компонента в парсию. Это не работает для компонентов cq:include d на странице/компоненте. Кроме того, это не мешает автору полностью удалить значение, если вы не добавите обработчики событий в диалоговом окне.
  5. Создайте модель компонента. Модель может предоставлять содержимое/значения по умолчанию, если свойства отсутствуют или не заполнены. Недостатком является то, что авторы могут не понимать, откуда приходят магические значения, если поля диалога пустые. Как только я работал над этим, создав тег, который будет использовать авторские значения, вернитесь к свойствам emptyText, а затем к возможным значениям шаблонов, чтобы «заполнить» содержимое. Это требует некоторых начальных усилий разработчиков, но предоставило авторам рекомендации, если содержимое отсутствовало, или компонент был включен вместо перетаскивания ... YMMV.

Однако ни одно из них не может работать для вас, если значение «контекстно-зависимое» и должно быть вычислено где-то/каким-то образом. Но если он вычисляется, то он, вероятно, не должен быть автором.

+0

спасибо, я в основном работаю с помощью обработчика JavaScript «beforeedit», который добавляет переменные I нужно как параметры запроса к граничному диалоговому пути, кажется, хорошо работает –