Ember Octane (3.22+), зачем использовать {{on 'click' this.function}} вместо onclick={{this.function}}

Итак, в Ember Octane есть два способа присоединения функции к событию в файле hbs.

Способ EmberJS: {{on 'click' this.function}}

Классический способ HTML: onclick={{this.function}}

Здесь предлагается использовать прежний синтаксис

Однако я не вижу причин использовать этот синтаксис, если у нас нет для этого веских причин.

Каковы причины, по которым я бы использовал первое вместо второго?


person Abe    schedule 30.10.2020    source источник
comment
Классический способ HTML слишком классический, он устарел и потенциально опасен.   -  person Teemu    schedule 30.10.2020
comment
Эй, я ценю ответ. Можете ли вы дать мне объяснение или связать меня с некоторыми статьями, объясняющими, почему?   -  person Abe    schedule 30.10.2020
comment
Вот несколько моментов, почему следует избегать встроенных слушателей. Потенциально опасно означает возможный обходной путь CSP, так как вы не можете nonce помечать встроенные обработчики или оценивать их как безопасные в целом.   -  person Teemu    schedule 30.10.2020


Ответы (1)


{{on 'click' this.function}}

использует семантику addEventListener из спецификации W3C DOM 1.0 и автоматически очищается с помощью removeEventListener при уничтожении шаблона.

onClick={{this.function}}

использует старую семантику событий DOM из HTML4, которая

  1. не допускает нескольких слушателей
  2. не распространяется на внешние элементы
  3. проглатывает любые события от вложенных элементов
person Gaurav    schedule 30.10.2020