Как передать данные в пользовательское событие через прототип EventTarget?
Я следую за этой записью в блоге о создании пользовательских событий с использованием прототипа EventTarget. В моем случае это EventTarget
объект должен быть изменен, чтобы вернуть data
к onDataEvent
слушатель:
o.onDataEvent("foo", function(data){
var dataRetrieved = data.message; //retrieve data object passed to fire function
console.log(dataRetrieved); //undefined
alert("Foo just happened.");
});
Таким образом, я сделал суть на основе этого сообщения в блоге в JSFiddle, где я переопределил EventTarget.fire
функция, которая отправляет событие, чтобы принять второй аргумент данных.
А также изменил подпись onDataEvent, чтобы включить параметр данных. Идея здесь заключается в том, что в дополнение к вызову event("foo")
Я бы вернул некоторые данные на мероприятие.
Я знаю, что событие называется через listeners[i].call(this, event);
Но мне не ясно, как я могу передать данные обратно в .call
,
Вопрос:
Как вы можете передать данные в пользовательское событие через прототип EventTarget?
Это суть этого кода: https://jsfiddle.net/hLj7yxw9/8/
Во время отладки я проверил, что событие вызывается с использованием этого шаблона, как вы можете видеть в приведенной выше скрипке.
1 ответ
Проходить data
как listeners[i].call(this, event, data)
Затем в вашем слушателе сделайте:
o.onDataEvent("foo", function(event, data){
console.log(data);
});