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.

Reply via email to