Не удается получить 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'}