Definir Ações

Você pode definir um componente para utilizar o registro de ações, de modo que ele possa ser solto em uma página que executará as ações dentro de seu componente.

Registrar Ações

Ações são chamadas componentes quando triggers são acionados. Um componente pode registrar qualquer número de ações e também definir o payload que a ação suporta. Quando um usuário seleciona uma ação, ele pode preencher o payload a ser transmitido à ação.

Do mesmo modo que no registro de triggers, você pode registrar as ações que seu componente suporta, nos dados de registro appinfo.json de seu tema.

Veja um exemplo de como registrar uma ação:

  1. Edite o arquivo appinfo.json para 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 registrada, a ação ficará visível na caixa de diálogo de ação que é chamada quando você clica em um trigger na guia Link, no painel Definição, para seu componente.

Executar Ações

Depois que uma ação for registrada, você poderá soltar componentes na página que executa ações dentro do componente. Para que um componente execute uma ação, ele deve fazer listening da mensagem EXECUTE_ACTION. Essa mensagem também inclui o payload transmitido à ação da qual você deve extrair os valores esperados.

Como exemplo, para fazer listening da mensagem EXECUTE_ACTION, edite o arquivo 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);
  }
};

Isso cria uma função JavaScript para executar a ação e depois usa o Sites SDK para chamar a função sempre que a mensagem EXECUTE_ACTION é emitida.

A ação será chamada sempre que uma mensagem EXECUTE_ACTION for emitida, e caberá ao componente tratar apenas as ações designadas. Para fazer isso, verifique o nome da ação para ter certeza de que você possa tratá-la.

O payload da ação é um array de valores. No exemplo, presume-se que o valor seja a primeira entrada no array. Normalmente, você deve encontrar no array os valores de payload do seu interesse.

Nota:

Como o listener de ação é uma chamada de retorno, use o JavaScript Closure ou faça binding apropriadamente da função para garantir que você tenha acesso ao seu ViewModel quando a função for executada.