Javascript Wisita onReady事件在角度控制器中多次触发

Javascript Wisita onReady事件在角度控制器中多次触发,javascript,angularjs,ionic-framework,wistia,window-object,Javascript,Angularjs,Ionic Framework,Wistia,Window Object,正在寻找有关如何在与$window结合使用时防止角度/离子应用程序中多次触发onReady的帮助。具体地说,我们将此方法用于Witia视频(按照说明)。违规代码是: $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 me

正在寻找有关如何在与
$window
结合使用时防止角度/离子应用程序中多次触发
onReady
的帮助。具体地说,我们将此方法用于Witia视频(按照说明)。违规代码是:

$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.\u wq
会多次执行
onReady
方法吗

我们如何使此代码角度友好(无需“黑客攻击”或强制修改),以便每次重新访问控制器视图时,
onReady
仅触发一次

我提供了一些示例代码,如果您愿意,可以用于在本地重现问题


任何见解、想法、想法都将不胜感激

这些都是可能导致问题的选项
1.我认为您有多个相同id的视频。
2.在api页面上,他使用了
\u wq.push
而不是
$window.\u wq.push


3.您使用的是angular,您是否检查过您有两个具有相同ng型号或ng click事件的视频

您可能有多个匿名函数回调浮动。我建议将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 };

这将帮助您至少将代码从匿名函数中隔离出来,并隔离函数的调用者,这将帮助您跟踪多个事件触发的根本原因。您可能还拥有多个控制器实例,但我没有任何Witia或Ionic经验。

您使用的是
iframe
Embeddes还是directed Embeddes?@Gentleman Max:我们使用的是标准JS嵌入选项,如上所述。没有
iframes
。感谢您的回复,nivas。我们按照威斯塔的指示行事。我们使用单个
div
class=“wistia_embed wistia_async_5bbw8l7kl5”
进行实际嵌入,然后在控制器中,我们使用
$window.\u wq
按照wistia的指令抓取视频播放器,以便在视频初始化时执行附加功能。所以,我不认为我们在任何地方都在使用多个视频?另外,关于
\u wq.push
$window.\u wq.push
的比较也很公平。但我的理解是,任何附加到
$window
的对象都会变成一个全局对象,所以我认为它们实际上是一样的。或者,至少,我在代码中尝试了这两种方法,但没有任何效果——仍然看到相同的问题。很好的建议。我们将尝试一下,看看它是否能让我们有所收获。非常感谢@雷,你有没有进一步的解释?我也有同样的问题,但有反应