Thanks @Peter, I like your update pattern. On Thursday, May 26, 2016 at 8:00:32 AM UTC+2, Milos Nedeljkovic wrote: > > I find first pattern (sending information upstream) a lot better, becuase > it seems to be more versatile. > It covers well also scenario where message does not come from view but > from command or subscription. > > Take for example List of Gif fetchers variation, where RandomGif should be > removed from list by its parent if it fails to fetch a gif (in addition to > clicking remove button). > RandomGif would send the same or similar information upstream on FetchFail > and Remove messages, and parent would react in same or similar way on that > information. > > On Wednesday, May 25, 2016 at 12:36:46 PM UTC+2, Peter Damoc wrote: >> >> There are two basic patterns that I've seen: >> >> You keep the child oblivious to parent actions and just extend the update >> signature to signify that it sends something upstream >> >> update : Msg -> Model -> (Model, Cmd Msg, Upstream) >> >> Here is an example of this: >> >> https://github.com/pdamoc/elm-architecture-tutorial/blob/master/examples/4/Counter.elm >> >> OR >> >> you use a Context for a specialized view that talks in the language of >> the parent/ancestor >> >> type alias Context parentMsg = >> { toParent : Msg -> parentMsg >> , someActionName : parentMsg >> ... >> } >> >> viewWithContext : Context parentMsg -> Model -> Html parentMsg >> >> >> e.g. Here is the Counter view: >> >> type alias Context parentMsg = >> { toParent : Msg -> parentMsg >> , remove : parentMsg >> } >> >> view : Model -> Html Msg >> view model = >> div [] >> [ button [ onClick Decrement ] [ text "-" ] >> , div [ countStyle ] [ text (toString model) ] >> , button [ onClick Increment ] [ text "+" ] >> ] >> >> viewWithContext : Context parentMsg -> Model -> Html parentMsg >> viewWithContext context model = >> div [] >> [ App.map context.toParent (view model) >> , button [ onClick context.remove ] [ text "X" ] >> ] >> >> and in the parent (CounterList) you do something like >> >> viewCounter (id, model) = >> Counter.viewWithContext (Counter.Context (Modify id) (Remove id) ) >> model >> >> >> view model = >> div [] (List.map viewCounter model.counters) >> >> >> >> >> >> On Tue, May 24, 2016 at 7:27 PM, TheGryzor123 <[email protected]> wrote: >> >>> I created a child component that is supposed to display notifications >>> coming from the parent. >>> >>> I know how to initialize and listen to a child but here I would like to >>> tell him to execute actions for me. >>> >>> What do you suggest me to do? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Elm Discuss" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> There is NO FATE, we are the creators. >> blog: http://damoc.ro/ >> >
-- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
