0

Ищете помощь по предотвращению onReady от стрельбы несколько раз в приложении с угловым/ионным при использовании в сочетании с $window. В частности, мы используем этот метод для видео Wistia (как указано here). Код-нарушителем является:Wisita onReady случайное срабатывание несколько раз в Угловом контроллере

$window._wq = $window._wq || []; 
$window._wq.push({ id: "5bbw8l7kl5", onReady: function(video) { 
    console.log("I got a handle to the video using Wistia's onReady method!", video.uuid); 
}}); 

Что это об использовании $window._wq, который заканчивается на выполнении onReady метод несколько раз?

Как мы можем сделать этот код Угловой дружественный (без «взлома» или принудительного обхода), так что onReady срабатывает только один раз при каждом просмотре контроллера?

Я поставил несколько примеров кода, которые могут быть использованы для воспроизведения проблемы локально here, если вы так решите.

Любые идеи, мысли, идеи были бы очень признательны !!

+0

Вы используете встроенные или встроенные вставки iframe? – GentlemanMax

+0

@GentlemanMax: Мы используем стандартную опцию JS embed, как описано [здесь] (https://wistia.com/doc/embed-options#setting_options_on_standard_and_popover_embeds). Нет 'iframes'. – raie

ответ

0

Возможные варианты, вызывающие проблемы
1.I думаю, у вас есть несколько видео с одинаковым идентификатором.
2. На странице апите он использовал _wq.push вместо $window._wq.push
3. Вы используете угловые, вы проверили у вас есть два видео с одинаковыми нг-моделью или нг-кликами

+0

Спасибо за ответ, nivas. Мы следуем инструкциям Wistia [здесь] (https://wistia.com/doc/embed-options#setting_options_on_standard_and_popover_embeds). Мы используем один 'div' с' class = "wistia_embed wistia_async_5bbw8l7kl5" для фактического встраивания, а затем в контроллер мы используем '$ window._wq' за инструкции Wistia [здесь] (https: // wistia.com/doc/player-api#use_windowwq_to_get_a_video_handle), чтобы захватить видеоплеер, чтобы мы могли выполнять дополнительные функции при инициализации видео. Итак, я не думаю, что мы используем несколько видеороликов в любом месте? – raie

+0

Кроме того, справедливая точка в отношении '_wq.push' против' $ window._wq.push', но я понимаю, что любой объект, привязанный к '$ window', просто становится глобальным объектом, поэтому я думаю, что они на самом деле то же самое. Или, по крайней мере, я пробовал как в своем коде, так и без эффекта, все еще видя ту же проблему. – raie

0

Вы можете иметь кратные этих анонимный функции обратные вызовы, плавающие вокруг. Я предлагаю извлечь обратный вызов onReady в отдельную функцию и передать функцию onReady в объект.

$window._wq = $window._wq || []; 
$window._wq.push({ id: "5bbw8l7kl5", onReady: onReadyCallback }); 
var onReadyCallback = (video) => { console.log('I got a handle to the video using Wistia's onReady method!', video.uuid }; 

Это поможет, по крайней мере изолировать код из анонимной функции и изолировать абонент от функции, которая поможет вам отследить причину многочисленных событий стрельбы. Возможно, у вас также есть несколько экземпляров контроллера, но у меня нет опыта Wistia или Ionic.

+0

Отличное предложение. Мы попробуем и посмотрим, доставит ли он нас куда угодно. Большое спасибо! – raie

+0

@raie, вы пришли дальше? У меня та же проблема, но с React –

 Смежные вопросы

  • Нет связанных вопросов^_^