Передача объекта данных в событие пожара

Я использую Mapbox GL, и в документе говорится:

Adds a listener to a specified event type.

Parameters:

type(string) The event type to add a listen for.

listener(Function) The function to be called when the event is fired. The listener function is called with the data object passed to fire , extended with target and type properties.

Источник: https://www.mapbox.com/mapbox-gl-js/api/#evented#on

Итак, если я это сделаю:

map.on('click', 'somelayer', { customData: 'foo' }, customFunction);

Я получаю сообщение об ошибке:

Uncaught TypeError: i.call is not a function

Что я делаю неправильно?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
406
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно сбросить {customData: 'foo'}:

map.on('click', 'somelayer', customFunction);

mapbox-gl пытается выполнить ваш объект как функцию.

Конечно, это сработает, если я откажусь от этого, но мне нужно передать данные.

eozzy 01.08.2018 14:30

Куда вы хотите передать данные?

Scarysize 01.08.2018 16:31
Ответ принят как подходящий

Вы можете использовать привязку:

map.on('click', customFunction.bind({customData: 'foo'}))

Или, если вы хотите сохранить контекст, вы можете использовать обертку:

function extend(fn, data) {
  return (e) => {
    e.data = data
    fn(e)
  }
}
map.on('click', extend(customFunction, {
  customData: 'foo'
}))

[http://jsfiddle.net/tu570Lgz/]

А что насчет использования стрелочных функций? См. jsfiddle.net/oy8j9L75 customData не передается в customfunction.

Toni BCN 30.04.2021 10:13

@ToniBCN Вы не можете повторно привязать это в стрелочной функции - stackoverflow.com/a/33308151/4989460

stdob-- 30.04.2021 13:22

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