Как получить исходный объект события в обработчике действия?

Я хотел бы уточнить, как получить исходный объект события в обработчике действий.

документация говорит:

To utilize an event object as a function parameter:

  • Define the event handler in the component (which is designed to receive the browser event object).
  • Or, assign an action to an inline event handler in the template (which creates a closure action and does receive the event object as an argument).

Итак, чтобы получить объект события во встроенном обработчике, мы делаем так:

hbs:

<form onsubmit = {{action "submit"}}>

js:

actions: {
  submit(e) {
    console.info(e); // original event
  }
}

А как насчет первого варианта определения обработчика событий в компоненте?

Не делайте первый вариант, и ваш пример верен

Lux 29.07.2018 13:37

@Lux Вы можете объяснить, о чем конкретно идет речь в первом варианте? В документации отсутствуют примеры этих двух пунктов. И почему его нельзя использовать?

Ivan C. 29.07.2018 20:00
Поведение ключевого слова "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) для оценки ваших знаний,...
0
2
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

event handler in the component означает функцию компонента, которая называется именем события. Его буквально первый пример здесь. И как говорится в документации:

Simply implement the name of the event you want to respond to as a method on your component.

Итак, когда вы вызываете свой компонент следующим образом:

{{#double-clickable}}
  This is a double clickable area!
{{/double-clickable}}

и это код js для компонента:

import Component from '@ember/component';

export default Component.extend({
  doubleClick(e) {
    alert('DoubleClickableComponent was clicked!');
    console.info('and this is the event', e);
  }
});

тогда функция doubleClick получает событие, когда событие запускается на соответствующем теге.

Однако соответствующие теги для компонентов со временем исчезнут. Взгляните на Вызов угловой скобки RFC и Только шаблон Компоненты RFC. Эта концепция уже полностью удалена из компонентов мерцать.

Вы по-прежнему используете его может, и, возможно, бывают редкие варианты использования, когда вы все еще используете имеют, но действия по закрытию - это определенно лучший способ, когда это возможно!

Итак, когда у вас есть этот шаблон:

<button onclick = {{action 'myAction' 10}}>Click me</button>

и соответствующий component.js:

actions: {
  myAction(n, e) {
    console.info(n); // the number 10
    console.info(e); // event
  }
}

Также следует отметить, что Методы обработчика событий в компонентах обычно получают в качестве аргумента экземпляр jquery.Event.. В упомянутом RFC подробно объясняется, как это изменится с удалением jQuery.

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