我正在尝试将AddThis小部件添加到ember.js应用程序。我正在使用直接从addthis.com获取的基本代码:

<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style addthis_32x32_style">
<a class="addthis_button_facebook"></a>
<a class="addthis_button_twitter"></a>
<a class="addthis_button_google_plusone_share"></a>
<a class="addthis_button_linkedin"></a>
<a class="addthis_button_pinterest_share"></a>
</div>
<script type="text/javascript" src="http://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-51ddaec37ede7c28"></script>
<!-- AddThis Button END -->

...并收到此错误:第2行上http://ct1.addthis.com/static/r07/core085.js发出“未捕获的TypeError:无法读取 undefined 的属性'call'”

我要求支持,但是还没有运气。关于造成此问题的原因的任何想法都将有所帮助!提前致谢!

编辑:我目前在应用程序的模板中上面的代码。

最佳答案

我对addthis小部件进行了更深入的研究,恕我直言,从脚本加载的代码做了一些令人讨厌的事情,例如创建script标签或iframe等,并且在handlebars模板中,小部件脚本无法使用的DOM操作与ember.js串联使用,除非addthis背后的团队做一些事情以使小部件更易于集成。

因此,我看了一些替代共享小部件,sharethisaddthis基本相同,但有一个很大的不同-我可以轻松地使用ember.js
基本上,我要做的是为窗口小部件创建一个 View ,在didInsertElement内部,窗口小部件初始化称为:

App.WidgetView = Ember.View.extend({
  templateName: 'widget',
  didInsertElement: function() {
    stLight.options({publisher: "ur-733dae74-7b06-4fef-3f54-f60dce5ce03e", doNotHash: false, doNotCopy: false, hashAddressBar: false});
  }
});

然后在另一个模板中,只需执行以下操作即可轻松使用小部件:
{{view App.WidgetView}}
widget模板如下所示:
<script type="text/x-handlebars" data-template-name="widget">
  <span class='st_sharethis_large' displayText='ShareThis'></span>
  <span class='st_facebook_large' displayText='Facebook'></span>
  <span class='st_twitter_large' displayText='Tweet'></span>
  <span class='st_linkedin_large' displayText='LinkedIn'></span>
  <span class='st_pinterest_large' displayText='Pinterest'></span>
  <span class='st_email_large' displayText='Email'></span>
</script>

在这里看看working demo

免责声明:尽管我的回答不能直接解决您的问题,但是也许它可以通过使用其他共享窗口小部件来帮助您采用其他方法,因为我猜您不会因为某些晦涩的编程窗口小部件无法正常工作而放弃ember.js

希望能帮助到你。

关于javascript - Ember.js + AddThis错误 “Uncaught TypeError: Cannot read property '调用“未定义”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17580457/

10-11 15:28