Aktionen festlegen

Sie können festlegen, dass eine Komponente die Aktionsregistrierung nutzt. Dann kann sie auf einer Seite abgelegt werden, die anschließend Aktionen in der Komponente ausführt.

Aktionen registrieren

Aktionen werden für Komponenten aufgerufen, wenn Trigger ausgelöst werden. Eine Komponente kann beliebig viele Aktionen registrieren und zudem die von einer Aktion unterstützte Payload definieren. Wenn Benutzer eine Aktion auswählen, können sie die an die Aktion zu übergebende Payload auffüllen.

Wie bei der Registrierung von Triggern können Sie von der Komponente unterstützte Aktionen in den Registrierungsdaten in appinfo.json für Ihr Theme registrieren.

Beispiel für die Registrierung einer Aktion:

  1. Bearbeiten Sie die Datei appinfo.json für die Komponente, und aktualisieren Sie den Eintrag "actions":[],.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. Nach der Registrierung wird die Aktion im Aktionsdialogfeld angezeigt, das beim Klicken auf einen Trigger auf der Registerkarte Link im Einstellungsbereich für die Komponente aufgerufen wird.

Aktionen ausführen

Nachdem eine Aktion registriert wurde, können Sie Komponenten auf der Seite ablegen, die Aktionen in der Komponente ausführen. Damit eine Komponente eine Aktion ausführt, muss sie auf die Nachricht EXECUTE_ACTION horchen. Diese Nachricht enthält auch die an die Aktion übergebene Payload, aus der Sie die erwarteten Werte extrahieren müssen.

Beispiel: Um auf die Nachricht EXECUTE_ACTION zu horchen, bearbeiten Sie die Datei render.js, und aktualisieren Sie das ViewModel-Objekt mit diesen Einträgen:
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);
  }
};

Dadurch wird eine JavaScript-Funktion zum Ausführen der Aktion erstellt. Diese wird dann über das Sites-SDK aufgerufen, wenn die Nachricht EXECUTE_ACTION ausgelöst wird.

Die Aktion wird jedes Mal aufgerufen, wenn die Nachricht EXECUTE_ACTION ausgelöst wird. Die Komponente muss dabei so eingerichtet werden, dass sie nur die beabsichtigten Aktionen verarbeitet. Prüfen Sie dazu den Namen der Aktion, um sicherzustellen, dass Sie sie verarbeiten können.

Die Payload für die Aktion ist ein Array aus Werten. Im Beispiel wird davon ausgegangen, dass der Wert der erste Eintrag im Array ist. In der Regel müssen Sie die für Sie wichtigen Payload-Werte im Array finden.

Hinweis:

Da der Aktions-Listener ein Callback ist, müssen Sie JavaScript Closure verwenden oder die Funktion angemessen binden, um sicherzustellen, dass Sie Zugriff auf das ViewModel haben, wenn die Funktion ausgeführt wird.