Javascript Adobe DTM不将角度变量识别为数据元素

Javascript Adobe DTM不将角度变量识别为数据元素,javascript,angularjs,adobe-analytics,Javascript,Angularjs,Adobe Analytics,我正在Adobe DTM管理面板中定义数据元素,按照以下说明: 我已经成功地测试了相当标准的JS变量,比如document.URL;这将正确填充到道具和/或评估中 我们的框架是有角度的;我们已经创建了一个称为“分析”的角度工厂,它保存了我们的分析包需要访问的值 我还通过chrome开发者工具测试了factory,以确保它在控制台中返回正确的值,并且返回正确的值 访问这些值的示例行如下所示: angular.element('*[ng app]').injector().get('analyti

我正在Adobe DTM管理面板中定义数据元素,按照以下说明:

我已经成功地测试了相当标准的JS变量,比如
document.URL
;这将正确填充到道具和/或评估中

我们的框架是有角度的;我们已经创建了一个称为“分析”的角度工厂,它保存了我们的分析包需要访问的值

我还通过chrome开发者工具测试了factory,以确保它在控制台中返回正确的值,并且返回正确的值

访问这些值的示例行如下所示:

angular.element('*[ng app]').injector().get('analytics').sVar.profileId

这将在控制台中返回正确的值,例如:
“1234-5678-9101”

当我尝试在Adobe DTM中使用此路径时,分配给此值的道具和/或eVar中不会填充任何值

我想知道Adobe Analytics是否在解释此路径时遇到问题,或者我是否使用了错误的路径。我对AngularJS的接触是初学者


谢谢。

这不是一条真正的道路。。这是一组链接在一起的js表达式,所以我不确定DTM是否真的可以处理这个问题

您是否尝试过将其作为自定义脚本来执行?如果你这样做的话,它肯定会起作用

如果它仍然不起作用,那么听起来你也有时间问题。向下滚动到该页面上的“数据元素可用性”部分

但即便如此,这也可能不够。e、 g.如果您在规则中使用此选项,而该规则设置为在“顶部”触发,则可能在您的数据存在之前触发。所以你可能也需要改变这一点

编辑更多有关计时的信息

DTM目前不提供控制何时通过接口设置数据元素的方法(例如,类似于基于事件的规则中的下拉列表)。然而,它确实提供了一种方法来明确地设置它

简而言之,您可以调用此函数来显式地计算数据元素

\u satellite.getVar('data element name')

你把它放在哪里取决于你需要它的时间/地点。所以基本上,您将在DTM允许定时控制的上下文中调用它

例如,正如我前面提到的,向下滚动到“”部分,了解有关如何显式设置数据元素作为规则条件一部分的详细信息。例如,可以将页面加载规则设置为pop on DOM ready或Onload(window.load)

这可能是因为即使这样也不适合您,例如,如果在dom就绪或window.load之后发生angular服务层调用(我不知道您的脚本实际在做什么)

如果是这种情况,另一种方法是将DTM底部页面代码放在回调中,以便在angular的服务层调用中提供数据时调用,并且(如果还没有),将adobe analytics调用更改为“页面底部”触发

或者,您可以让初始的Adobe Analytics页面视图按自己的速度进行,并调用DTM直接调用规则,让您的VAR作为第二次Adobe Analytics调用弹出。基本上,它的工作方式是您创建一个直接调用规则,对于条件字符串,您将有一些独特的东西,比如“foobar”,然后在规则中设置您的Adobe变量。然后在数据层值可用时弹出的任何角度回调中,您都会调用

\u卫星跟踪(“foobar”)

编辑#2

因此,我在DTM核心代码中进行了探索,在我看来,
pageBottomFired
在dom就绪时也被设置为
true
。因此,基本上将
\u satellite.pageBottom()
包装在某些东西中对您不起作用(上面的删除)。在我看来,我不认为应该是这样,但我想它就是这样

我确信直接调用方法会起作用,因为我以前使用过这种方法。。但我同意,这不是一个理想的解决方案。要从中删除额外的ping,您可以做的一件事是从主工具列表中删除Adobe Analytics,而是在直接调用规则中将其作为自定义js输出-这基本上意味着数据元素现在没有意义,因为您可以直接将s.prop或w/e与您的Adobe Analytics代码一起直接弹出到其中。简言之,这是一个非常丑陋的解决方案,它违背了DTM的观点,但除非Adobe在显式调用它时将其更改为仅触发
pageBottom()
,否则它要么是此解决方案,要么是使用双Adobe Analytics请求:/


我想另一种选择可能是将实际的DTM脚本include放入angular.js回调中,但a)这也会破坏DTM具有完整计时范围的值,b)我不知道DTM实际会如何反应。我可能会玩弄它,看看它是否“有效”,但没有承诺

这不是一条真正的道路。。这是一组链接在一起的js表达式,所以我不确定DTM是否真的可以处理这个问题

您是否尝试过将其作为自定义脚本来执行?如果你这样做的话,它肯定会起作用

如果它仍然不起作用,那么听起来你也有时间问题。向下滚动到该页面上的“数据元素可用性”部分

但即便如此,这也可能不够。e、 g.如果您在规则中使用此选项,而该规则设置为在“顶部”触发,则可能在您的数据存在之前触发。所以你可能也需要改变这一点

编辑更多有关计时的信息

DTM目前不提供控制何时通过接口设置数据元素的方法(例如,类似于基于事件的规则中的下拉列表)。然而,它确实提供了一种方法来明确地设置它

简而言之,您可以调用此函数来显式地计算数据元素

\u satellite.getVar('data element name')