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] <javascript:>
> > 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] <javascript:>.
>> 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.

Reply via email to