Ustawianie czynności

Można skonfigurować składnik tak, aby korzystał z zarejestrowanych czynności — gdy zostanie przeciągnięty na stronę, czynności te zostaną wykonane w obrębie składnika.

Rejestrowanie czynności

Czynności są wywoływane dla składników, gdy zostaną uaktywnione odpowiednie wyzwalacze. Składnik może mieć zarejestrowaną dowolną liczbę czynności, przy czym można zdefiniować ładunek obsługiwany przez daną czynność. Użytkownik, wybierając czynność, może wypełnić danymi przekazywany do niej ładunek.

Podobnie jak w przypadku rejestrowania wyzwalaczy, można — używając danych rejestracyjnych appinfo.json dla danego motywu — zarejestrować czynności obsługiwane przez składnik.

Przykład rejestrowania czynności:

  1. Otworzyć do edycji plik appinfo.json składnika, po czym zaktualizować wpis "actions":[],.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. Zarejestrowana czynność będzie od razu widoczna w oknie dialogowym czynności, które jest wywoływane, gdy użytkownik kliknie na wyzwalaczu na karcie Łącze w panelu ustawień składnika.

Wykonywanie czynności

Mając zarejestrowane czynności, można przeciągać składniki na stronę, a czynności te będą wykonywane w obrębie składnika. Składnik, aby móc wykonać czynność, musi nasłuchiwać komunikatu EXECUTE_ACTION. W komunikacie tym jest także zawarty ładunek przekazany do czynności, z którego trzeba wyodrębnić oczekiwane wartości.

Na przykład, aby był prowadzony nasłuch komunikatu EXECUTE_ACTION, należy otworzyć plik render.js do edycji i zaktualizować w nim obiekt ViewModel, używając następującego kodu:
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);
  }
};

Kod ten tworzy funkcję JavaScript wykonywania czynności, a następnie używa biblioteki Sites SDK do wywołania tej funkcji, gdy tylko zostanie zgłoszony komunikat EXECUTE_ACTION.

Czynność ta będzie wywoływana przy każdym zgłoszeniu komunikatu EXECUTE_ACTION, a o tym, czy zostanie wykonana, decyduje sam składnik. Dlatego, aby mieć pewność, że jest to czynność obsługiwana, trzeba sprawdzić jej nazwę.

Ładunek dla czynności ma postać tablicy wartości. W tym przykładzie zostało przyjęte założenie, że wartością jest pierwszy wpis w tablicy. Zazwyczaj trzeba odnaleźć w tablicy odpowiednie wartości ładunku.

Uwaga:

Ponieważ nasłuch funkcji działa w trybie wywołania zwrotnego, należy — aby mieć pewność, że w chwili uruchomienia funkcji jest możliwy dostęp do obiektu ViewModel — użyć domknięcia (closure) JavaScript albo odpowiednio powiązać funkcję.