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

Позвольте мне объяснить вам это на примере. Недавно я столкнулся с требованием проекта, которое требовало от меня отказаться от правила Ember (déjà vu? ). Такие конфликтующие случаи могут возникать в Ember из-за таких сценариев, как взаимодействие между одноуровневыми компонентами, асинхронная загрузка данных в отдельных компонентах, использование сторонних библиотек и т. Д. Я обычно стараюсь делать что-то в Ember (y ) путь возможен, но давайте просто скажем, что в этом конкретном сценарии я был вовлечен в сложное слияние вышеупомянутых сценариев. Итак, я придумал небольшое хитрое решение для решения этой проблемы, используя само правило DDAU Ember, немного злоупотребляя им.

Короче говоря, вот постановка проблемы, за которой следует решение:

Вызов действия / функции дочернего компонента из родительского компонента

Решение

Теперь мы не можем выполнить sendAction от родительского компонента до дочернего компонента из-за ограничений Ember, но что мы можем сделать, так это отправить одно из дочернего компонента, чтобы зарегистрировать ссылку на себя с родительским ( видите, к чему это идет?). Затем родительский компонент может использовать эту ссылку на дочерний компонент для вызова его функции при необходимости. Я решил разместить вызов sendAction внутри ловушки didInsertElement дочернего элемента, чтобы зарегистрировать себя в родительском компоненте, как только он будет добавлен в родительский DOM.

Ниже приводится суть решения. Вы также можете поиграть с родственным тидллом Ember.

Спасибо, что дочитали. Если вам понравился пост, не стесняйтесь :) Вы можете украдкой выразить свою поддержку аплодисментами. Если вы ожидаете большего, нажмите кнопку подписки.

Ваше здоровье.