Wisita onReady事件在Angular控制器中多次触发

时间:2017-01-06 17:06:38

标签: javascript angularjs ionic-framework wistia window-object

在与onReady结合使用时,寻找有关如何防止$window在Angular / Ionic应用中多次触发的帮助。具体来说,我们将这种方法用于Wistia视频(按照指示here)。违规代码是:

$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方法有什么用?

我们如何使这个代码成为Angular友好的(没有“黑客攻击”或强制解决方案),以便onReady每次只重新访问控制器视图时才触发一次?

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

任何见解,想法,想法都将非常感谢!!

2 个答案:

答案 0 :(得分:0)

这些是导致问题的可能选择 我认为你有多个同名的视频 2.在api页面上,他使用了_wq.push而不是$window._wq.push
3.您正在使用角度,您是否检查过两个具有相同ng模型或ng-click事件的视频

答案 1 :(得分: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体验。