Definir Ações

Pode definir um componente para otimizar o registo de ações, de modo a poder ser largado numa página que irá executar ações no seu componente.

Registar Ações

As ações são chamadas nos componentes quando os triggers são gerados. Um componente pode registar qualquer número de ações e também definir o payload que a ação suporta. Quando um utilizador seleciona uma ação, pode preencher o payload a transmitir à ação.

Tal como no registo de triggers, pode registar as ações que o seu componente suporta nos dados de registo do appinfo.json para o seu tema.

Segue-se um exemplo de como registar uma ação:

  1. Edite o ficheiro appinfo.json para o seu componente e atualize a entrada "actions":[],.
    "actions": [{
      "actionName": "helloWorldChangeWhoIAm",
      "actionDescription": "Change Who I Am",
      "actionPayload": [{
        "name": "whoAreYou",
        "description": "Who are you?",
        "type": {
          "ojComponent": {
           "component": "ojInputText"}
          },
        },
        "value": ""
      }]
    }]
  2. Uma vez registada, a ação estará visível na caixa de diálogo de ação que é invocada quando clica num trigger no separador Ligação do painel Definições do seu componente.

Executar Ações

Assim que uma ação estiver registada, poderá largar componentes na página que executam ações no componente. Para um componente executar uma ação, este deve monitorizar a mensagem EXECUTE_ACTION. Esta mensagem também inclui o payload transmitido à ação a partir do qual deve extrair os valores esperados.

A título de exemplo, para monitorizar a mensagem EXECUTE_ACTION, edite o ficheiro render.js e atualize o objeto ViewModel com estas entradas:
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);
  }
};

Isto cria uma função de JavaScript para executar a ação e, em seguida, utiliza o Sites SDK para chamar a função sempre que a mensagem EXECUTE_ACTION for gerada.

A ação será chamada sempre que for gerada uma mensagem EXECUTE_ACTION e cabe ao componente tratar apenas das ações cujo processamento lhe diz respeito. Para isso, deve verificar o nome da ação de modo a garantir que é uma que pode processar.

O payload para a ação é uma matriz de valores. No exemplo, é assumido que o valor é a primeira entrada na matriz. Normalmente, deve encontrar os valores do payload que lhe interessam a partir da matriz.

Nota:

Como o listener da ação é uma callback, deve utilizar um JavaScript Closure ou associar de modo adequado a função para garantir que tem acesso ao seu ViewModel quando a função for executada.