Шаг 6. Срабатывание триггеров

В ходе выполнения этого шага мы покажем, как срабатывает зарегистрированный триггер.

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

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

В файле render.js обратите внимание на объект SampleComponentViewModel.

Чтобы сработал триггер:

  1. Проверьте функцию в объекте SampleComponentViewModel, который вызывает Sites SDK для активации триггера.

    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': triggerName, 
        'triggerPayload': { 
            'payloadData': 'some data here'
        }
      });
    };
  2. Теперь для срабатывания триггера необходимо, чтобы какой-то элемент пользовательского интерфейса вызвал данную функцию. Просмотрите файл render.js и обновите объект sampleComponentTemplate, чтобы получить следующую запись:

         '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +

В объекте SampleComponentViewModel содержится функция JavaScript, которая вызывается, если нажать изображение. Эта функция вызывает Sites SDK, чтобы передать команду на запуск всех действий, определенных для триггера "imageClicked", который представляет собой значение, переданное из привязки click в ходе выполнения шага 2. Она также передает объект triggerPayload с одним полем:payloadData, а также статическое значение "some data here". Эти значения imageClicked и whoAreYou соответствуют значениям в файле appinfo.json, где зарегистрирован триггер (в ходе выполнения предыдущего шага).

В данном примере кода триггер вызывается привязкой данных click и передается в имени триггера imageClicked. В настоящее время существует три варианта рендеринга компонента <scs-image> на основе выбранного пользователем макета. Чтобы убедиться в срабатывании триггера для каждого макета, внесите в файл render.js следующие изменения.

  • Активация триггеров из разных макетов. Найдите две записи этого кода:

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}">' +

    Измените код на следующее:

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
  • Укажите полезные данные, передаваемые триггерам. Измените этот код:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': 'some data here'
            }
          });
        };

    Вместо него используйте этот код:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': self.imageBannerText() // pass banner text as payload
            }
          });
        };
  • Выполните синхронизацию или загрузите файл render.js на сервер экземпляров Oracle Content Management.

После проверки требуемого кода можно подключить триггер, чтобы пользовательский компонент активировал его при нажатии кнопки.

Проверка результатов для шага 6

Теперь вы можете зарегистрировать действие для выполнения по триггеру, а также выполнить действие при срабатывании триггера:

  1. Обновите страницу на своем сайте, чтобы приложение Site Builder могло отслеживать изменения в компоненте.

  2. Переключите страницу в режим редактирования.

  3. Перетащите свой компонент на страницу.

  4. Откройте панель "Настройки" для своего компонента.

  5. Выберите вкладку Ссылка в верхней части панели "Настройки".

  6. В списке Действия триггера выберите вариант "Тип ссылки".

  7. Нажмите зарегистрированный триггер imageClicked.

  8. В диалоговом окне перетащите действие Показать оповещение из раздела Действия на странице.

  9. В поле Сообщение выберите значение payloadData, которое представляет собой полезные данные, введенные при регистрации триггера.

  10. Закройте панель "Настройки" и переключите Site Builder в режим предварительного просмотра.

  11. Нажмите на изображение в компоненте.

    Появится оповещение no message defined, так как не указано значение imageBannerText.

  12. Переключите страницу в режим редактирования и снова откройте панель "Настройки" для данного компонента.

  13. Нажмите Пользовательские настройки и введите Workplace.

  14. Закройте панель "Настройки" и переключите страницу в режим предварительного просмотра.

  15. Нажмите на изображение в компоненте.

    Теперь должны отображаться обновленные полезные данные Workplace, которые вызываются из изменения привязки click.

При срабатывании триггера может быть выполнено любое количество действий.

Примечание.:

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

Теперь выполните Шаг 7. Регистрация действий.