Définition d'actions

Vous pouvez définir un composant dans le but d'exploiter l'inscription d'actions afin que le composant puisse être déplacé vers une page qui exécutera les actions dans le composant.

Inscription d'actions

Les actions sont appelées sur les composants lorsque des déclencheurs sont activés. Un composant peut inscrire un certain nombre d'actions et définir les données traitées prises en charge par l'action. Lorsqu'un utilisateur sélectionne une action, il peut remplir les données traitées à transmettre à l'action.

A l'instar des déclencheurs, vous pouvez inscrire les actions prises en charge par le composant dans les données d'inscription appinfo.json du thème.

Voici un exemple d'inscription d'action :

  1. Modifiez le fichier appinfo.json du composant et mettez à jour l'entrée "actions":[],.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. Une fois inscrite, l'action apparaît dans la boîte de dialogue d'action appelée lorsque vous cliquez sur un déclencheur dans l'onglet Lien du panneau des paramètres du composant.

Exécution d'actions

Une fois l'action inscrite, vous pourrez déplacer le composant vers la page qui exécute les actions dans le composant. Pour qu'un composant exécute une action, il doit écouter le message EXECUTE_ACTION. Ce message comprend également les données traitées transmises à l'action à partir desquelles vous devez extraire les valeurs attendues.

Par exemple, pour écouter le message EXECUTE_ACTION, modifiez le fichier render.js et mettez à jour l'objet ViewModel avec ces entrées :
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);
  }
};

Cette opération crée une fonction JavaScript pour exécuter l'action et utilise le kit SDK Sites pour appeler la fonction dès que le message EXECUTE_ACTION est déclenché.

L'action sera appelée dès qu'un message EXECUTE_ACTION est déclenché, et c'est au composant de gérer uniquement les actions pour lesquelles il est conçu. A cet effet, vous devez vérifier le nom de l'action pour vous assurer qu'elle est gérée.

Les données traitées de l'action sont un tableau de valeurs. L'exemple part du principe que la valeur est la première entrée du tableau. En règle générale, vous devez chercher les valeurs de données traitées qui vous intéressent dans le tableau.

Remarque :

Le processus d'écoute d'action est un callback, vous devez donc utiliser une fermeture JavaScript ou lier correctement la fonction pour veiller à avoir accès à ViewModel lorsque la fonction est exécutée.