首页 > 解决方案 > Vimeo API 方法中的变量“未定义”

问题描述

所以我在我的 Angular 8 应用程序中嵌入了一个 vimeo 视频,现在我试图在视频开始播放并结束后触发一些动画。本质上,如果屏幕宽度为<800,则变量isMobiletrue。接下来,我play调用了 vimeo 方法,该方法检查 if isMobileistrue并将load_completed(动画触发器)设置为true. 问题是我的变量isMobile返回undefined,这是为什么呢?

  isMobile = false;

  constructor() { }

  ngOnInit() {
    this.innerWidth = window.innerWidth;
    console.log(this.innerWidth);
    if (this.innerWidth < 800) {
      this.isMobile = true;
    }

    var iframe = document.querySelector('iframe');
    var player = new Vimeo.Player(iframe);

    player.on('play', function() {
      //isMobile returns undefined why?
      console.log(this.isMobile);
      if (this.isMobile) {
        this.load_completed = true;
      }
      console.log('Played the video');
    });

    player.on('ended', function(data) {
      console.log('Video ended');
    });
  }

标签: javascriptangularundefinedvimeo

解决方案


尝试arrow function如下使用,这里是explanation

player.on('play',()=>{
 console.log(this.isMobile);
})

推荐阅读