Um componente pode incluir triggers que executarão ações em outros componentes. Registre os triggers a serem acionados pelos componentes.
O componente fornece um payload para um trigger, que é transmitido a qualquer ação executada quando o trigger é acionado. Você pode selecionar quais ações serão executadas para cada trigger. Os componentes criados para funcionamento conjunto podem acionar triggers automaticamente para executar ações sem a interação do usuário.
Registrar Triggers
Para um componente personalizado, os triggers são registrados como parte dos dados de registro do componente. Para adicionar um trigger, atualize o array de propriedade "triggers"
com cada trigger que o componente suporta. Especifique também o payload que o trigger suporta para que a interface do usuário possa ser criada para permitir que os usuários mapeiem os valores dentro do payload para as propriedades suportadas pela ação.
appinfo.json
e verifique a entrada "triggers":[],
:
"triggers": [{ "triggerName": "helloWorldWhoAreYou", "triggerDescription": "Show Who I Am", "triggerPayload": [{ "name": "whoAreYou", "displayName": "Who I Am" }] }],
Sincronize o arquivo com o servidor de sites.
Nesta entrada de trigger de amostra, você definiu um triggerName
("helloWorldWhoAreYou"
). O valor do nome deve ser exclusivo. Você deu ao trigger uma descrição ("Show Who I Am"
), que é usada pela caixa de diálogo da interface do usuário para exibir o trigger. Por último, você definiu um payload de valor único para o trigger; os usuários poderão selecionar entradas nesse payload e mapeá-las para campos na ação.
Depois que um trigger for registrado, você deverá vê-lo e selecioná-lo quando acessar a guia Link no painel Definições do seu componente.
Acionar Triggers
É possível acionar triggers em qualquer ponto por um componente. Em geral, um trigger é acionado por uma interação do usuário, como o clique em um botão ou a seleção de uma linha em uma tabela. Um componente pode acionar o trigger com base em qualquer critério, por exemplo, quando dados são alterador por causa de uma chamada de API REST. Você pode executar qualquer número de ações quando um trigger é acionado.
render.js
e adicione uma função JavaScript no objeto viewModel
que chamará o Sites SDK para acionar o trigger.
self.raiseTrigger = function (triggerName) { SitesSDK.publish(SitesSDK.MESSAGE_TYPES.TRIGGER_ACTIONS, { 'triggerName': 'helloWorldWhoAreYou', 'triggerPayload': { "whoAreYou": "This is " + self.whoAreYou() + "!"} }); };
-edit template.html
) e um botão antes de </div>
.
<button data-bind="click raiseTrigger">Who Am I?</button>
Sincronize ou faça upload do arquivo render.js
para o servidor de instância do Oracle Content Management.
No objeto ViewModel
, você criou uma função JavaScript que é chamada quando alguém clica no botão. Essa função chama o Sites SDK para instruí-lo a acionar todas as ações definidas para este trigger "helloWorldWhoAreYou"
. Ela também passa por um triggerPayload
que tem um único campo, "whoAreYou"
. Esses valores "helloWorldWhoAreYou"
e "whoAreYou"
correspondem aos que você digitou quando registrou o trigger na etapa anterior.
Nota:
Não há ordem predefinida para quando uma ação é executada. Embora cada ação seja chamada na ordem em que é listada, não há espera de conclusão antes que a próxima ação seja chamada. Se uma ação fizer uma chamada assíncrona, poderá não ser concluída antes da execução da próxima ação.