0

我在一个大型项目中第一次使用 Angular,其中一个要求是我们使用 AddThis 进行文章的社交分享。但除了AddThis共享之外,我们还想在谷歌分析中跟踪共享事件。

所以我想做的是添加AddThis

<div class="addthis_toolbox addthis_16x16_style">
  <a class="addthis_button_preferred_1"></a>
  <a class="addthis_button_preferred_2"></a>
  <a class="addthis_button_preferred_3"></a>
  <a class="addthis_button_preferred_4"></a>
  <a class="addthis_button_compact"></a>
</div>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=XXXXX"></script>

并在控制器中添加一个事件处理程序,如他们的文档 http://support.addthis.com/customer/portal/articles/381263-addthis-client-api-#configuration-sharing中所述

addthis.addEventListener('addthis.menu.open', eventHandler);
addthis.addEventListener('addthis.menu.close', eventHandler);
addthis.addEventListener('addthis.menu.share', eventHandler);

问题是我似乎无法在控制器的 $scope 中获得对 addthis 对象的引用。有谁知道我如何通过指令或其他一些技巧来完成此操作来执行 document.ready 并获取对 addthis 对象的引用?

4

1 回答 1

0

addthis是的属性,window并且必须在任何范围内可见,但是我猜想在 addthis_widget.js 中没有评估type参数addEventListener

你试过这个吗?

<div class="addthis_toolbox addthis_16x16_style">
  <a class="addthis_button_preferred_1"></a>
  <a class="addthis_button_preferred_2"></a>
  <a class="addthis_button_preferred_3"></a>
  <a class="addthis_button_preferred_4"></a>
  <a class="addthis_button_compact"></a>
</div>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=XXXXX"></script>
<script type="text/javascript">
    addthis.addEventListener('addthis.menu.open', eventHandler);
    addthis.addEventListener('addthis.menu.close', eventHandler);
    addthis.addEventListener('addthis.menu.share', eventHandler);
<script>

这样,每次重新加载小部件时都应该应用事件。

如果没有帮助,您可以像我在这里所做的那样将其包装成指令。尝试在指令中添加您的侦听器。

于 2013-05-20T16:45:17.990 回答