Ошибка Ember.js + AddThis Uncaught TypeError: невозможно прочитать вызов свойства неопределенного

Я пытаюсь добавить виджет 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 -->

... и получаю эту ошибку: «Uncaught TypeError: не удается прочитать вызов свойства undefined» из http://ct1.addthis.com/static/r07/core085.js в строке 2.

Я попросил поддержку, но пока не повезло. Любые идеи относительно того, что вызывает это, будут полезны! Заранее спасибо!

Изменить: в настоящее время у меня есть код выше в шаблоне в приложении.


person MelArlo    schedule 10.07.2013    source источник
comment
а ты уверен, что в консоли указано, что ошибка именно в этом файле?   -  person Rommel Castro    schedule 11.07.2013
comment
Ну, весь этот код находится в строке 2… Можете ли вы получить неминифицированную версию для тестирования?   -  person Bergi    schedule 11.07.2013
comment
Да я уверен. Консоль ссылается на эту строку в этом документе с этой ошибкой.   -  person MelArlo    schedule 11.07.2013
comment
@Bergi К сожалению, если что-то не изменилось, я не думаю, что смогу... support.addthis.com/customer/portal/questions/   -  person MelArlo    schedule 11.07.2013


Ответы (1)


Я внимательно изучил виджет addthis и, ИМХО, код, загруженный из скрипта, делает некоторые неприятные< /em> такие вещи, как создание тега script, iframe и т. д., и внутри шаблона handlebars манипуляции с DOM, которые выполняет сценарий виджета, не будут работать в тандеме с ember.js, если только команда, стоящая за addthis делает что-то, чтобы сделать виджет более удобным для интеграции.

Итак, я рассмотрел несколько альтернативных виджетов обмена, и sharethis в основном работает так же, как addthis, но с одним большим отличием: мне было легко работать с ember.js

По сути, я создал представление для виджета, а внутри 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>

Посмотрите здесь рабочее демо.

Отказ от ответственности: хотя мой ответ не решает напрямую вашу проблему, но, возможно, он поможет вам использовать другой подход, используя другой виджет обмена, потому что я думаю, вы не откажетесь от ember.js только из-за какого-то непонятного запрограммированного виджета. не работает правильно.

Надеюсь, поможет.

person intuitivepixel    schedule 11.07.2013
comment
О, я думаю, будет! Я собираюсь применить это на практике как можно скорее! Большое спасибо @intuitivepixel - person MelArlo; 11.07.2013
comment
Я установил его, и он работает по большей части! Спасибо! Однако теперь я получаю эту ошибку. Uncaught TypeError: Невозможно прочитать свойство «0» неопределенного. Тем не менее, гораздо ближе, чем AddThis. Спасибо! Любая идея, что он будет пытаться прочитать, но не может? - person MelArlo; 12.07.2013
comment
@MelArlo хм, я думаю, было бы полезно увидеть ваш код, чтобы найти проблему, или, лучше, вы могли бы опубликовать другой вопрос с примером кода, предпочтительно в jsbin, чтобы было легче отлаживать - person intuitivepixel; 12.07.2013
comment
Я думаю, вы правы... Я отправлю новый вопрос, если это необходимо. Возможно, мы решили это, и если да, я опубликую вопрос и ответ. Еще раз спасибо за старт! - person MelArlo; 12.07.2013
comment
Оказывается, проблема заключалась в асинхронной загрузке через Ember.js. Перемещение включения сценария ShareThis внутрь вызова didInsertElement в представлении заработало! :D - person MelArlo; 12.07.2013
comment
-1 за рекомендацию ShareThis. Прочтите этот пост в блоге о неприятных вещах, которые делает ShareThis. - person Luke; 09.05.2016