Experience page - Acessar payload como variável no javascript

Bom dia,

Queria saber se tem alguma forma de usar o payload de uma Experience Page como um objeto dentro do javascipt da página, não apenas acessando as variáveis com handlebars.
Exemplos:

  1. Tentando acessar a variável pageData diretamente como se fosse uma variável
  2. Tentando acessar por handlebars
  3. Resultado que era esperado acessando a variável pageData de alguma forma

Gostaria de manipular essas variáveis para acessar como se tivesse fazendo um bloco HTML de um dashboard.

No endpoint "GET / ", por exemplo, eu já carrego para o payload o compositeStates dos devices para fazer a barra de navegação, além de outras informações. Quando eu crio uma página do tipo Dashboard, usando bloco HTML, acabo fazendo a mesma query dentro do dashboard para retornar o compositeState dos devices e montar o dashboard. Se for possível acessar o payload diretamente no javascript da experience page, eu não precisaria criar o dashboard, mas sim renderizar em forma de página mesmo.

Agradeço desde já, e fico à disposição para esclarecimentos.
Att,
Gabriel Linhares

Boa tarde, Gabriel!

Estamos verificando com nossa engenharia a melhor forma e logo iremos trazer aqui.

Muito obrigado!

1 Curtida

Boa tarde @linhares,

Como você está tentando acessar a variável pageData que retorna um objeto, é necessário utilizar o helper jsonEncode, conforme exemplo {{jsonEncode pageData}}. Ele executa uma função semelhante ao JSON.parse() do javascript.

Assim, segue exemplo de utilização:

<script>
const jsonData = {{jsonEncode pageData}}
/* jsonData = {
      "custom": "data",
      "value": 5
}*/
if(jsonData.value == 5){
    console.log(jsonData.custom)
}
</script>

Lembrando que deve-se tomar cuidado para não expor variáveis, como no caso de variáveis de configurações salvas no globals.

Outro cuidado que se deve ter, é com a quantidade de dados renderizado, pois se for um objeto muito grande isso pode acarretar em erros na renderização da página.

Espero que isso ajude.

2 Curtidas