Не удается получить videojs на слушателе при использовании Underscore _.bind

Вот как я заставил это работать, но мне не нравится, как это выглядит. Я действительно хочу, чтобы это работало с помощью _.bind

displayVideo: function displayVideo() {
  let _this = this;
  this.videoJs = videojs('player', {}, function () {
    this.on('play', _this.onPlayerPlayButton);
    this.on('pause', _this.onPlayerPauseButton);
  });
},

Слушатель событий.on не работал, когда я написал это так

displayVideo: function displayVideo() {
  this.videoJs = videojs('player', {}, _.bind(function () {
    this.on('play', this.onPlayerPlayButton);
    this.on('pause', this.onPlayerPauseButton);
  }, this));
},

1 ответ

Решение

Это образец из библиотеки подчеркивания.

var func = function(greeting){ return greeting + ': ' + this.name };
func = _.bind(func, {name: 'moe'}, 'hi');
func();

Этот образец работает. Функция привязывается к этому (вызывающий метод displayVideo вашего объекта)

Попробуйте этот пример со страницы подчеркивания на странице подчеркивания http://underscorejs.org/ чтобы увидеть, как это работает.

Он вызовет функцию func и скажет аргументы "Hi" с таким именем, где это второй аргумент вашей функции подчеркивания _.bind, объект {name: 'Moe'}

Другие вопросы по тегам