dataLayer.push добавляет новый элемент вместо обновления существующего - PullRequest
0 голосов
/ 09 июля 2019

Я запускаю некоторые А / Б-тесты с Google Optimize и пытаюсь просто обновить значение в dataLayer из моего приложения, но вместо обновления оно просто добавляет новый объект. Согласно документам, он должен обновляться, если ключ уже существует.

Я что-то упустил?

Например:

// initiate dataLayer at the top of <head>
window.dataLayer = [{
  message: ""
}];

// later after some stuff loaded
window.dataLayer.push({message: 'Test message'});

console.log(window.dataLayer) // added instead of updated
// [
//   {message: ""},
//   {message: "test"}
// ]

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Стивен,

Похоже, вы пропустили использование одинарных кавычек в своем утверждении. В документации Google говорит

dataLayer.push({new-variable: 'value'});      // Won't work

вместо

dataLayer.push({'new-variable': 'value'});    // Better

Посмотрите на код ниже

<script>
  dataLayer = [];
  dataLayer.push({'message' : 'Test message'});
</script>

С документацией можно ознакомиться здесь - https://developers.google.com/tag-manager/devguide

0 голосов
/ 10 июля 2019

Короче говоря, и благодаря комментарию @IskandarRezaRazali, он работает правильно, но я должен был использовать window.google_tag_manager["GTM-XXXXXX"].dataLayer.get('message') (который всегда даст вам самую последнюю запись), чтобы получить значение, а не пытаться получить к нему доступ через индекс или иметьделать Array.find`.

...