Size: a a a

Elm Lang сообщество разработчиков

2019 October 30

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
В таких случая точно лучше барьер абстрации ввести и вложенную сущность функциями нормально названными менять, не?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
{ foo | bar = { foo.bar | baz = False } }
хуже, чем
{ foo | bar = Bar.toggle foo.bar }
источник

SG

Sasha Golubev in Elm Lang сообщество разработчиков
согласен
источник

MP

Max P in Elm Lang сообщество разработчиков
Sasha Golubev
@maxfarseer
На примере модулей можно рассмотреть:
у вас есть App(у него model, update, view, subscribes, e.t.c.)
В рамках этого приложения есть условно Навигация  Nav(со своими: model, update, view, subscribes).
Область видимости Nav только ее model, .. e.t.c.

И порядок действий приблизительно следующий:
1. Произошел update App, внутри него вы поняли, что надо обновить навигацию, и вызвали Nav.update и передали параметры Nav.Model, Nav.Msg
спасибо, попробую.
источник

MP

Max P in Elm Lang сообщество разработчиков
Sasha Golubev
@maxfarseer
На примере модулей можно рассмотреть:
у вас есть App(у него model, update, view, subscribes, e.t.c.)
В рамках этого приложения есть условно Навигация  Nav(со своими: model, update, view, subscribes).
Область видимости Nav только ее model, .. e.t.c.

И порядок действий приблизительно следующий:
1. Произошел update App, внутри него вы поняли, что надо обновить навигацию, и вызвали Nav.update и передали параметры Nav.Model, Nav.Msg
я пока не вижу разделения на отдельные view в своем фрагменте, поэтому подумаю, если получится сформировать более точный вопрос - напишу
источник

MP

Max P in Elm Lang сообщество разработчиков
то что в туториалах, где у нас, например, три страницы, у каждой свои view и update и model - понятно. А тут модель одна, в ней модалка (record), и в этой модалке нужно изменить значение поля.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Поэтому не один update, а несколько осмысленно названых функций.
источник
2019 October 31

MP

Max P in Elm Lang сообщество разработчиков
@erwert и @astynax я сделал пример с апдейтом "подмодели", кастомный тип Short / Detailed и type alias Submodel я здесь добавил для эмуляции рабочего кода (будем считать это условиями задачи). Это похоже на правду, или должно быть иначе? https://ellie-app.com/75cpwdtHn9Da1
источник

MP

Max P in Elm Lang сообщество разработчиков
мне кажется, что что-то не так) много копипасты и мусора добавилось 🙁
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Ща глянем!
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Так. updateSubModel не должен принимать тот же Msg
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
У подмодели свои сообщения
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Да и updateSubModel у вас принимает AppSubModel, а должен бы только SubModel!
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
У подмодели свои сообщения
ок, взял в работу)
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
У подмодели свои сообщения
но как потом в сообщение с кнопки модель родителя узнать? не могу уловить идею
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Э... зачем?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Это же протечка абстракции!
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Если вложенный элемент должен что-то сообщить родителю — возвращайте из update
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
update
 : msg -> model
 -> (model, Cmd msg, Maybe msgToParent)
источник

MP

Max P in Elm Lang сообщество разработчиков
так, об этом не думал. Спасибо за идею
источник