Perfect! That worked. Thanks for the link describing how to import union type constructors.
On Monday, May 30, 2016 at 2:04:21 AM UTC-5, Janis Voigtländer wrote: > > > http://elm-community.github.io/elm-faq/#why-when-i-import-a-module-that-defines-a-type-does-the-compiler-know-about-the-type-name-but-not-its-constructors > > > 2016-05-30 8:44 GMT+02:00 David <[email protected] <javascript:>>: > >> Thank you, Peter. You've described a nice solution. >> >> The problem I'm having, though is that when I try to send Child2.someMsg the >> compiler tells me that `Child2` does not expose `someMsg`. I am, however >> exposing it in the module shown in the code below. >> >> How does one create a Msg to then send to Child2? It appears that even >> though it's exposed it's not recognized in the parent module. >> >> Relevant code: >> >> module Child2 exposing (Msg, Model, view, update, model) >> ... >> >> -- Msg Union Type Definition Child2 >> >> type Msg = >> SomeMsg >> | NoOp >> >> >> >> >> On Monday, May 30, 2016 at 1:22:26 AM UTC-5, Peter Damoc wrote: >>> >>> You have multiple ways to address this, depending on the role or the ID. >>> >>> If the ID is just an identifier of the child, it should not be in the >>> child because it has nothing to do with the child functionality. It should >>> be in the parent, similar to the way CounterList is implemented in the >>> tutorial. Once it is in the parent, your problem becomes very simple since >>> you will have access to the ID in the parent `update` >>> >>> If, for some reason, you need to keep the id inside the child, you can >>> expose an interrogation API on the model >>> >>> case of msg >>> UpdateFromChild1 msg -> >>> let >>> newChild1 = Child1.update msg model.child1 >>> id = Child1.id model.child1 >>> c2msg = Child2.someMsgForId id >>> newChild2 = Child2.update c2msg model.child2 >>> in >>> { model | child1 = newChild1, child2 = newChild2 } >>> >>> And in Child1.elm have >>> >>> id model = model.id >>> >>> in Child2.elm have >>> >>> someMsgForId id = SomeMsg id >>> >>> Approaching things like this ensure that you are not needlessly coupling >>> Child1 and Child2 code. >>> >>> >>> >>> >>> >>> >>> On Mon, May 30, 2016 at 4:06 AM, David <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> I'm new at this too and just experimenting. The model structured is >>>> presented below. I don't think it has much to do with the model, but more >>>> to do with the fact that the update in Child2 is expecting a Child2.Msg, >>>> but is instead receiving a Child1.Msg. >>>> >>>> Model Child2 >>>> --- >>>> model = >>>> { id: Int >>>> , name: String >>>> , description: String >>>> } >>>> >>>> >>>> >>>> On Sunday, May 29, 2016 at 4:12:59 PM UTC-5, Witold Szczerba wrote: >>>>> >>>>> Hi, >>>>> I am just experimenting with Elm, haven't done anything yet, so I will >>>>> be watching how this thread evolves. Looking at your case, I have but one >>>>> question: what's the model of the component you have problem with? >>>>> >>>>> Regards, >>>>> Witold Szczerba >>>>> 29 maj 2016 21:06 "David" <[email protected]> napisał(a): >>>>> >>>>> I need to update 2 child components based on the Action/Msg of 1 child >>>>> component. How would I do this? >>>>> >>>>> The UpdateFromChild1 contains a Child1.Msg, which contains an id. I'd >>>>> like to send the id to the models of Child1 update *and* to Child2 >>>>> update. >>>>> >>>>> Code: >>>>> >>>>> Main update >>>>> --- >>>>> update msg model = >>>>> case of msg >>>>> UpdateFromChild1 msg -> >>>>> Child1.update msg Child1.model <---- works, update gets correct >>>>> message with id >>>>> Child2.update *msg* Child2.model <---- does not work, obviously >>>>> ^---------------------- somehow change this to >>>>> (Child2.Msg id)? >>>>> UpdateFromChild2 msg -> >>>>> -- stuff only child 2 cares about >>>>> >>>>> >>>>> >>>>> Main view >>>>> --- >>>>> view model = >>>>> div [] >>>>> [ App.map UpdateFromChild1 (Child1.view Child1.model) >>>>> , App.map UpdateFromChild2 (Child2.view Child2.model) >>>>> ] >>>>> >>>>> -- >>>>> 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. >>>>> >>>>> -- >>>> 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] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.
