Configurarea de acţiuni

Puteţi înregistra acţiuni pentru o componentă, astfel încât când plasaţi componenta respectivă pe o pagină, se vor executa acţiunile înregistrate pentru ea.

Înregistrarea de acţiuni

Acţiunile asociate componentelor sunt executate când sunt generate triggere. Pentru o componentă se pot înregistra oricât de multe acţiuni şi, de asemenea, se poate defini payloadul acceptat de fiecare acţiune. Când un utilizator selectează o acţiune, acesta poate popula payloadul de transmis către acea acţiune.

La fel ca în cazul înregistrării triggerelor, puteţi înregistra acţiunile pe care le acceptă componenta dvs. în datele de înregistrare appinfo.json asociate temei dvs.

Iată un exemplu de înregistrare a unei acţiuni:

  1. Editaţi fişierul appinfo.json pentru componenta dvs. şi reîncărcaţi intrarea "actions":[],.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. După înregistrare, veţi putea vedea acţiunea în dialogul de acţiune care este invocat atunci când faceţi clic pe un trigger în fila Link din panoul Setare aferent componentei dvs.

Executarea acţiunilor

După înregistrarea unei acţiuni, veţi putea plasa componente pe pagină care permit executarea acţiunilor înregistrate în acestea. Pentru ca o componentă să execute o acţiune, aceasta trebuie să asculte mesajul EXECUTE_ACTION. Acest mesaj include, de asemenea, payloadul transmis pentru acţiune, din care trebuie să extrageţi valorile aşteptate.

De exemplu, pentru a asculta mesajul EXECUTE_ACTION, editaţi fişierul render.js şi reîncărcaţi obiectul ViewModel cu aceste intrări:
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);
  }
};

Va fi creată o funcţie JavaScript pentru executarea acţiunii, apoi se va utliza SDK-ul Sites pentru apelarea funcţiei ori de câte ori este generat mesajul EXECUTE_ACTION.

Acţiunea va fi apelată ori de câte ori este generat un mesaj EXECUTE_ACTION, iar componenta va trata doar acţiunile pe care este desemnată să le trateze. Pentru aceasta, trebuie să verificaţi numele acţiunii pentru a vă asigura că poate fi tratată.

Payloadul asociat acţiunii reprezintă o matrice de valori. În exemplu, se presupune că valoarea reprezintă prima intrare din matrice. În mod normal, în matrice ar trebui să găsiţi valorile care vă interesează pentru payload.

Notă:

Deoarece listenerul acţiunii reprezintă o reapelare, trebuie să utilizaţi JavaScript Closure sau să asociaţi în mod corespunzător funcţia pentru a vă asigura că aveţi acces la ViewModel atunci când este executată funcţia.