Definición de acciones

Puede definir que un componente utilice el registro de la acción para que se pueda soltar en una página que ejecutará acciones en el componente.

Registro de acciones

Se llama a las acciones en los componentes cuando se emiten los disparadores. Un componente puede registrar un número cualquiera de acciones y definir también la carga útil que admite la acción. Cuando un usuario selecciona una acción, puede rellenar la carga útil para que se transfiera a la acción.

Al igual que con el registro de disparadores, puede registrar las acciones que admita el componente en los datos de registro de appinfo.json del tema.

A continuación se muestra un ejemplo de cómo registrar una acción:

  1. Edite el archivo appinfo.json del componente y actualice la entrada "actions":[],.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. Una vez registrada, la acción será visible en el cuadro de diálogo de acciones que se llama cuando hace clic en un disparador en el separador Enlace del panel Configuración del componente.

Ejecución de acciones

Una vez registrada una acción, podrá soltar componentes en la página que ejecuten acciones dentro del componente. Para que un componente ejecute una acción, debe recibir el mensaje EXECUTE_ACTION. Este mensaje también incluye la carga útil transferida a la acción desde la que debe extraer los valores esperados.

Por ejemplo, para recibir el mensaje EXECUTE_ACTION, edite el archivo render.js y actualice el objeto ViewModel con las siguientes entradas:
self.executeActionListener = function (args) {
  // get action and payload
  var payload = $.isArray(args.payload) ? args.payload[0] : {},
        action = args.action,
        actionName = action && action.actionName;

  // handle 'helloWorldChangeWhoIAm' actions
  if ((actionName === 'helloWorldChangeWhoIAm') && (payload.name === 'whoAreYou')) {
    self.whoAreYou(payload.value);
  }
};

Esto crea una función JavaScript para ejecutar la acción y, a continuación, utiliza el SDK de Sites para llamar a la función siempre que se emite el mensaje EXECUTE_ACTION.

Se llamará a esta acción siempre que se emita un mensaje EXECUTE_ACTION, y dependerá del componente gestionar solo las acciones para las que está diseñado. Para ello, debe comprobar el nombre de la acción para asegurarse de que sea una acción que puede gestionar.

La carga útil de la acción es una matriz de valores. En el ejemplo, se asume que el valor es la primera entrada en la matriz. Normalmente, debe buscar los valores de carga útil que le interesan en la matriz.

Nota:

Debido a que el listener de acción es una devolución de llamada, debe utilizar un closure de JavaScript o enlazar la función de forma adecuada para asegurarse de tener acceso a ViewModel cuando se ejecute la acción.