>
> The problem i see with this approach is that in hierarchy of deeply nested
> components, the whole ancestry would need to know about the intention of
> the leaf.
Sort of. Each module only needs to consider it's direct child/children. So,
to use a module, you have to use it's API.
I understand your concern, from a theoretical standpoint, but having a
large complex elm spa ourselves, this just isn't an issue. Depending on how
you choose to build your application (I assume you're building an SPA), it
is very likely that *every* main architectural module (page modules) will
have a nicely developed API that allows the enclosing module (main module)
to "hook-in" to events that are happening internally to it. It's actually
very pleasant to manage once you get used to it.
For example, here is an imaginary module:
MyModule.elm
type Model =
Model {..}
type alias Config msg =
{ onClick : msg }
view : Config msg -> Model -> Html msg
view config model =
button [onClick config.onClick] [text "Submit"]
The view function allows parent modules to configure the view to return
parent messages. Here is an example of a parent hooking into the view
function
Parent.elm
type alias Model =
{ myModuleModel : MyModule.Model }
type Msg
= ChildClicked
view : Model -> Html Msg
view model =
MyModule.view myModuleConfig model.myModuleModel
myModuleConfig : MyModule.Config Msg
myModuleConfig =
{onClick -> ChildClicked}
Forgive any mistakes - I'm coding this quickly. So, that is just a tiny
example. You can do the same thing with your update functions (passing in
an update config) but the arrangement is a little different. Does that help?
On Friday, December 2, 2016 at 9:25:48 AM UTC-5, Birowsky wrote:
>
> The problem i see with this approach is that in hierarchy of deeply nested
> components, the whole ancestry would need to know about the intention of
> the leaf. I was hoping towards more of a command-like approach.
>
>
> On Dec 2, 2016, at 14:45, Erik Lott <[email protected] <javascript:>>
> wrote:
>
> Birowsky, your leaf component will need return messages to the parent, and
> the parent can act on those messages to update it's state. There's no magic
> to it unfortunately. Do you have a specific problem you're trying to solve?
>
> On Wednesday, November 30, 2016 at 12:04:08 PM UTC-5, Birowsky wrote:
>>
>> Hey Eric, please elaborate on this one. How do you envision leaf
>> component triggering global state update?
>>
>>
>>> The second problem becomes: *how do we load this global state/business
>>> data into the application and cache it?* This requirement is now fairly
>>> easy to wire-up in elm since the http requests and data cache all live at
>>> the same level of the application (the top level). If anyone wants more
>>> details on how to do this, let me know.
>>>
>>
>>
>>
>>
> --
> 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/j-Wa6NGiYUM/unsubscribe.
> To unsubscribe from this group and all its topics, 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.