Acties instellen

U kunt een component zo instellen dat actieregistratie wordt benut, zodat de component op een pagina kan worden neergezet waarop acties binnen uw component worden uitgevoerd.

Acties registreren

Acties worden aangeroepen voor componenten wanneer triggers worden gegenereerd. Voor een component kan elk aantal acties worden geregistreerd en kan ook de payload worden gedefinieerd die met de actie wordt ondersteund. Wanneer een gebruiker een actie selecteert, kan hij of zij de payload invullen die aan de actie moet worden doorgegeven.

Net zoals met de registratie van triggers kunt u acties registreren die met uw component worden ondersteund in de registratiegegevens in het bestand appinfo.json voor uw thema.

Hier ziet u een voorbeeld van hoe u een actie kunt registreren:

  1. Bewerk het bestand appinfo.json voor uw component en werk de ingang "actions":[], bij.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. Zodra de actie is geregistreerd, is deze zichtbaar in het actiedialoogvenster dat wordt opgeroepen wanneer u op een trigger klikt op het tabblad Koppeling in het paneel 'Instellingen' voor uw component.

Acties uitvoeren

Zodra een actie is geregistreerd, kunt u componenten op de pagina neerzetten waarmee acties binnen de component worden uitgevoerd. Een component moet luisteren naar het bericht EXECUTE_ACTION om een actie uit te kunnen voeren. Dit bericht omvat ook de payload die wordt doorgegeven aan de actie, waaruit u de verwachte waarden moet extraheren.

Voorbeeld: om te luisteren naar het bericht EXECUTE_ACTION bewerkt u het bestand render.js en werkt u het object ViewModel bij met de volgende invoergegevens:
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);
  }
};

Hiermee wordt een JavaScript-functie gemaakt om de actie uit te voeren. Vervolgens wordt de Sites SDK gebruikt om de functie aan te roepen wanneer het bericht EXECUTE_ACTION wordt gegenereerd.

De actie wordt aangeroepen wanneer een bericht EXECUTE_ACTION wordt gegenereerd, en door de component worden alleen acties afgehandeld waarvoor de component is ontworpen. Hiervoor moet u de naam van de actie controleren om er zeker van te zijn dat deze kan worden afgehandeld.

De payload voor de actie is een array van waarden. In het voorbeeld wordt aangenomen dat de waarde de eerste ingang in de array is. Doorgaans moet u de payloadwaarden die u wilt hebben in de array zoeken.

Opmerking:

Omdat de actielistener een callback is, moet u JavaScript Closure gebruiken of de functie op de juiste manier binden om ervoor te zorgen dat u toegang hebt tot uw ViewModel wanneer de functie wordt uitgevoerd.