Have you looked at the modularity section
<http://guide.elm-lang.org/architecture/modularity/counter_pair.html> of
the Elm guide? It doesn't yet specifically cover nesting components that
have subscriptions, but points you to examples 3 and 4 here
<https://github.com/evancz/elm-architecture-tutorial/tree/master/nesting>.
You should end up with your main body module having something like
type Msg
= MyTopLevelMessage Int
| SomeOtherTopLevelMessage String
| ClockMessage Clock.Msg
so the main module has one message type that wraps all clock-related
messages in their own tag (oblivious to whether those clock-related
messages are time ticks or anything else). If your clock has subscriptions,
your main module might do something like
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.map ClockMessage (Clock.subscriptions model.clock)
to generate a top-level subscription (perhaps batching that with its own
subscriptions if necessary). If you can post some of your code we can take
a look...
On Wednesday, 10 August 2016 01:21:40 UTC+10, Rupert Smith wrote:
>
> On Thursday, August 4, 2016 at 11:30:00 PM UTC+1, Rupert Smith wrote:
>>
>> The next step I think will be to take the navigation bar, and the clock
>> widget and organize the code in such a way that the widget is a re-usable
>> component that I can embed in the navigation bar.
>>
>
> Up till now I have mostly messed around with the view - so I can use a
> functional language to render a view. This is very nice and a lot more
> powerful than say Handlebars templates. I started using StringTemplate in
> Java because it claimed to be a functional language that did templating. In
> fact, it never really lived up to its claim to be a functional language.
> Elm views do feel like a functional templating language - it is easy to
> combine the functions that produce output with whatever complex functions
> you need to structure or calculate the content of the output.
>
> I have followed this guide to structuring the code:
>
>
> http://blog.jenkster.com/2016/04/how-i-structure-elm-apps.html#comment-2634825704
>
> Moderately helpful - at least it made the files smaller, I know which file
> to open to adjust the model, update function or view and there is not too
> much text in each. It feels more manageable that way.
>
> But this is definitely getting harder...
>
> I have embedded the clock as a component within another, which is the main
> body part of the page. What I am struggling a bit with, is how do I attach
> the 'subscription' that transforms Time into a Tick that then drives the
> clock 'update' function back to the top-level subscription needed to build
> the whole application?
>
> I need a Tick Msg at the top-level to do this? This feels a bit strange,
> surely there is some way I can attach the clock to the timer without
> needing to be aware of that from outside of that particular component? That
> is, just add the clock to my view and let it tick away all by itself...
>
--
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.