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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to