Отдельные проблемы с сообщениями - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь создать общий модал, который принимает в качестве параметров текст для отображения и событие для отправки на onClick кнопки подтверждения.

Существует кнопка отмены, которая разделяетскрытие функций с помощью кнопки подтверждения.

Итак, я попытался отправить 2 события на onClick подтверждения.Один для логики принятия и один для логики сокрытия.И это не работает, только первое событие работает.

Я попробовал другую стратегию, скрытое событие может иметь событие OnHideModal (Maybe Msg), поэтому модал объединяет оба события до принятия, а OnHide скрывает модал.и отправляет внутреннее событие для продолжения обработки.Это кажется мне слишком тяжелым, потому что если у вас есть 3 или более логических событий, все ваши события должны иметь еще один Maybe Msg.И у меня возникают трудности с Cmd Msg внутренними событиями.

Кажется, люди советуют сделать HideAndLogic событие, но это привело бы к большому количеству копирования и вставки скрывающего кода, по одному для каждой логики.Кроме того, логика будет связана с логикой сокрытия, которая усложнит понимание.И если я хочу отправить событие для логики, ничего не скрывая, мне придется сделать другое событие, которое копирует половину логики первого.Это идет вразрез с хорошей практикой базового программирования, поэтому я думаю, что некоторые люди, возможно, нашли лучший способ.Способ, позволяющий действительно разделять эти отдельные логики даже в событиях-прародителях.

Использование Elm 0.18

1 Ответ

0 голосов
/ 20 сентября 2018

Я думаю, вы делаете это слишком сложно.Вам нужно:

viewModal : msg -> msg -> Html msg 
viewModal  acceptMsg  cancelMsg = 
  div [] [ ... button [onclick acceptMsg] ...
           ... button [onclick cancelMsg] ...
         ]

Затем вашей основной модели нужен shouldShowModal : Bool или какой-то другой способ решить, должен ли он показывать модал.
Модал вызовет сообщение, которое вы будете обрабатывать вваш цикл событий.

...