Paso 6: Emitir disparadores

En este paso, veremos cómo se emite el disparador que vio registrado.

Un componente puede emitir disparadores en cualquier momento. Normalmente, lo emite una interacción de usuario, haciendo clic en un botón o seleccionando una fila de una tabla. Sin embargo, el componente puede emitir un disparador basándose en cualquier criterio; por ejemplo, cuando cambian los datos debido a una llamada de REST.

Para este ejemplo, cuando haga clic en la imagen, se emitirá un disparador que se trasfiere a través del valor actual de la propiedad whoAreYou.

Revise el archivo render.js y consulte el objeto SampleComponentViewModel.

Para emitir un disparador:

  1. Revise la función en el objeto SampleComponentViewModel que llama al SDK de Sites para emitir el disparador.

    self.raiseTrigger = function (triggerName) {
      SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
        'triggerName': triggerName, 
        'triggerPayload': { 
            'payloadData': 'some data here'
        }
      });
    };
  2. Necesita algo en la interfaz de usuario para llamar a la función y que emita el disparador. Revise el archivo render.js y actualice el objeto sampleComponentTemplate para tener esta entrada:

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

En el objeto SampleComponentViewModel, verá la función de JavaScript a la que se llama cuando se hace clic en la imagen. Esta función llama al SDK de Sites para indicarle que dispare todas las acciones definidas para el disparador "imageClicked", que es el valor transferido del enlace click en el paso 2. También se transfiere a través de triggerPayload, cuyo único campo es payloadData y a través de un valor estático 'some data here'. Los valores imageClicked y whoAreYou coinciden con los del archivo appinfo.json cuando se registra el disparador (en el paso anterior).

En el código de ejemplo, el disparador lo emite un enlace de datos del enlace click y transfiere el nombre del disparador imageClicked. Actualmente hay tres representaciones del componente <scs-image> basadas en el diseño que elige el usuario. Para asegurar que se emite el disparador para cada uno de los diseños, edite el archivo render.js para efectuar los cambios siguientes.

  • Emitir disparadores de diferentes diseños. Busque las dos entradas de este código:

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

    Cambie el código de la forma siguiente:

    '<div data-bind="attr: {style: imageStyle, \'data-layout\': alignImage()}, click: imageClicked">' +
  • Especificar la carga útil que transferir a los disparadores. Cambie este código:

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

    Use este código en su lugar:

        self.raiseTrigger = function (triggerName) {
          SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, {
            'triggerName': triggerName,
            'triggerPayload': {
              'payloadData': self.imageBannerText() // pass banner text as payload
            }
          });
        };
  • Sincronice o cargue el archivo render.js en el servidor de instancias de Oracle Content Management.

Ahora que ha comprobado el código necesario, puede enlazar el disparador para que el componente personalizado lo emita cuando se haga clic en el botón.

Compruebe los resultados del paso 6

Ahora debería poder registrar una acción para que se ejecute en el disparador y que también se ejecute cuando se emita el disparador:

  1. Refresque la página del sitio para que el creador de sitios pueda seleccionar los cambios del componente.

  2. Cambie la página al modo de edición.

  3. Arrastre y suelte el componente en la página.

  4. Abra el panel de configuración del componente.

  5. Seleccione el separador Enlace en la parte superior del panel de configuración.

  6. Seleccione Acciones del disparador en Tipo de enlace.

  7. Haga clic en el disparador imageClicked que vio registrado.

  8. En el cuadro de diálogo, arrastre la acción Mostrar alerta de la sección Acciones de página.

  9. En el campo Mensaje, seleccione el valor payloadData, que es la carga útil que introdujo cuando registró el disparador.

  10. Cierre el panel de configuración y cambie el creador de sitios al modo de vista previa.

  11. Haga clic en la imagen del componente.

    Aparecerá una alerta que indica no message defined, puesto que no ha especificado ningún valor imageBannerText.

  12. Cambie la página al modo de edición y abra de nuevo el panel de configuración del componente.

  13. Haga clic en Configuración personalizada e introduzca Workplace.

  14. Cierre el panel de configuración y cambie la página al modo de vista previa.

  15. Haga clic en la imagen del componente.

    Ahora debería aparecer la carga útil actualizada Workplace, a la que se llama a partir del cambio realizado en el enlace click.

Puede ejecutar cualquier número de acciones cuando se emite un disparador.

Nota:

No hay ningún orden predefinido en cuanto a cuándo se ejecuta una acción. Aunque se llamará a cada acción en el orden en el que aparece en la lista, no se espera a que se complete antes de que se llame a la siguiente acción. Si una acción realiza una llamada asíncrona, puede que no se complete antes de que se ejecute la siguiente acción.

Continúe con Paso 7: Registrar acciones.