0

onReady$window. 具体来说,我们将这种方法用于 Wistia 视频(按照此处的说明)。违规代码是:

$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每次重新访问控制器视图时只触发一次?

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

任何见解,想法,想法将不胜感激!!

4

2 回答 2

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 经验。

于 2017-01-07T21:06:15.110 回答
0

这些是导致问题的可能选项
1.我认为您有多个具有相同 ID 的视频。
2. 在他使用的 api 页面上,_wq.push而不是$window._wq.push
3. 您正在使用 Angular,您是否检查过您有两个具有相同 ng-model 或 ng-click 事件的视频

于 2017-01-06T17:54:23.080 回答