Я получаю ошибку типа при использовании Youtube IFrame api с Knockout JS.Видео загружается на ftl, но player.getDuration () вызывает ошибку из-за асинхронных вызовов до полной инициализации объекта player.Кто-нибудь имеет какие-либо идеи о том, как решить эту проблему в Knockout JS?
Я пытался с помощью метода обратного вызова, затем и сделали методы, но не повезло в Knockout JS.
Сведения об ошибке:
Uncaught TypeError: player.getDuration is not a function
at Object.getTotalDuration (youtube-player-module.require.js:28)
at list-view-module.require.js:102
at Object.onYouTubeIframeAPIReady (youtube-player-module.require.js:24)
at ViewModel.self.submitform(list-view-module.require.js:101)
at Modal.eval (eval at parseBindingsString (knockout-latest.js:68), <anonymous>:3:96)
at HTMLInputElement.<anonymous> (knockout-latest.js:89)
at HTMLInputElement.dispatch (jquery.js:5183)
at HTMLInputElement.elemData.handle (jquery.js:4991)
list-view-module.require.js
youtubeplayermodule.onYouTubeIframeAPIReady(vid,function ()
{
var duration= youtubeplayermodule.getTotalDuration();
});
youtube-player-module.require.js
let player = ko.observable();
function onYouTubeIframeAPIReady(vid, doneCallBack) {
player = new YT.Player('video-placeholder', {
videoId: vid,
events: {
'onReady': initialize
}
});
doneCallBack();
}
function getTotalDuration() {
return player.getDuration();
}
function initialize(){
alert('initiaze');
}