2014-10-07 73 views
4

我们使用Facebook跟踪像素来跟踪我们的Facebook广告的效果。 为此,对于第一次访问我们服务的每个用户,我们需要在DOM中触发跟踪像素。 我们通过在控制器中将$ scope.newReg设置为true并在模板中使用以下代码来完成此操作。使用Angular.js跟踪像素

<div ng-if="newReg == true"> 
<img height="1" width="1" alt="" style="display:none" src="https://www.facebook.com/tr?ev=xxxxxx&amp;cd[value]=0.00&amp;cd[currency]=EUR&amp;noscript=1" /> 
</div> 

问题是如果$ scope.newReg设置为false,那么实际情况如何。 我想跟踪像素不应该被解雇,但根据文档,它似乎可以被解雇。 “如果条件是虚假的,那么该元素将从DOM树中移除。” 这意味着跟踪像素可能会出现在DOM中,然后被删除。即使条件失败,这也会触发跟踪计数器。

+0

我认为这取决于您的跟踪像素HTML的位置。 – 2014-10-07 16:54:27

+0

如果上述标记位于具有ng-app的默认html页面内,那么这将在Angular引导和评估'ng-if'指令之前加载到DOM中。所以是的,如果style属性没有说'display:none',这会在很短的时间内出现。 – 2014-10-07 16:59:59

+0

根据Facebook示例代码,它具有显示为“无”的样式属性。无论如何,这不是关于像素是否实际显示,而是关于是否被触发。 – 2014-10-08 19:17:03

回答

1

我建议你不要依赖ng-if文档,这可能会因为性能需求或仅仅是一些错误而改变下一个版本。

我建议你创建自己的跟踪像素指令,如果条件很好,它会注入html。

+0

听起来像是一个更好的解决方案,但你将如何创建指令呢?我看不到任何其他的方式,而不仅仅是使用ng - 如果在指令的模板标记内。你会注入html的哪种方式? – 2014-10-12 16:09:43