dataLayer.push正在添加新项,而不是更新现有项

时间:2019-07-09 17:07:45

标签: google-tag-manager google-datalayer google-optimize

我正在使用Google Optimize运行一些A / B测试,并试图仅从我的应用程序更新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 :(得分:0)

简而言之,感谢@IskandarRezaRazali的评论,它可以正常工作,但是我应该一直在使用private void File_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); // File dir Console.WriteLine(files[0].ToString()); // Get mouse coords Point mouse = PointToScreen(e.GetPosition(this)); Point pt = Mouse.GetPosition(worldMap); Point adjustedPt = new Point(); adjustedPt.X = pt.X + mouse.X; adjustedPt.Y = pt.Y + mouse.Y; Location dropLoc = worldMap.ViewportPointToLocation(adjustedPt); GeoPushpin newPin = new GeoPushpin(); newPin.Location = dropLoc; worldMap.Children.Add(newPin); } } (它将始终为您提供最新条目)来检索值,而不是尝试通过索引访问它或必须执行Array.find`。

答案 1 :(得分:0)

史蒂文,

好像您错过了声明中单引号的使用。 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