Yes, the view would return Html parentMsg. The signature would be something 
like:

view: (ChildMessage -> parentMsg) -> parentMsg -> ChildModel -> Html parentMsg

Note that parentMsg is parameterized.

Mark

> On Jul 7, 2016, at 3:27 PM, Sandi Dušić <[email protected]> wrote:
> 
> Thank you Mark!
> 
>> One way to do this is to extend the view function with two arguments: one is 
>> a function to map the counter messages to the parent message space and the 
>> other is the parent message that the remove button should send.
> Would the child view then return Html ParentMsg? In reality, my components 
> are more separated in depth, by four levels. Bit ugly, but seems it's all we 
> have right now. It actually appears elegant in contrast to my approach.
> 
> 2016-07-07 21:18 GMT+02:00 Mark Hamburg <[email protected]>:
>> We're still awaiting an official answer from Evan. In the meantime, the best 
>> answer I've seen from the standpoint of not contaminating the counter 
>> messages and update function with something that they don't care about is to 
>> put the complexity in the view function which is, I would argue, where it 
>> belongs since this it's a view layout issue that forces the remove button to 
>> be included in the counter view. One way to do this is to extend the view 
>> function with two arguments: one is a function to map the counter messages 
>> to the parent message space and the other is the parent message that the 
>> remove button should send.
>> 
>> Mark
>> 
>>> On Jul 7, 2016, at 10:50 AM, Sandi Dušić <[email protected]> wrote:
>>> 
>>> In Elm 0.16 the Architecture tutorial had one more button list example (I 
>>> dug that up from an old commit), aside from this one. Each counter would 
>>> have it's own remove button which would remove that exact one when clicked, 
>>> unlike in the simpler example with a sole remove button that removes the 
>>> first counter. This was accomplished by passing two addresses to the 
>>> counter view, one for it's own actions and another which it's father 
>>> component (CounterList) handled, used for signaling removal. 
>>> 
>>> I did the exact same thing in my application. I have a bunch of small 
>>> components in a big component, and the big component needs to know when one 
>>> of the small ones has been clicked. How do you do this in 0.17? Is it 
>>> impossible, since they removed the example which is supposed to implement 
>>> it?
>>> 
>>> This is the only thing I can think of: Add the message that needs to be 
>>> sent upwards to the big component to the message union of the small 
>>> component (in the CounterList, this would mean Counter.Msg has Remove). 
>>> When the big component gets a small component action, it would first check 
>>> with an if whether it's the one it needs to handle (if msg == 
>>> Counter.Remove then ...). If so, it can handle it (remove the Counter), 
>>> otherwise it would just regularly pass it to Counter.update.
>>> 
>>> To me that seems like it goes against the principles of Elm Architecture. 
>>> You can no longer treat components (and especially their actions) like 
>>> black boxes, but rather you have to tear them apart in a way. They cannot 
>>> fully define their interface. I don't know, it's just weird.
>>> 
>>> If there's a way to define custom subscriptions they might be leveraged to 
>>> solve this, but I don't see a way to do that in the API. I apologize if 
>>> this is a silly question, 0.17 is still new to me.
>>> -- 
>>> 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 a topic in the 
>> Google Groups "Elm Discuss" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/elm-discuss/H1AUQelu78c/unsubscribe.
>> To unsubscribe from this group and all its topics, 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.

-- 
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