That is expected. Generally you'd have a uniquely named port per module unless they really do all need to get the message. It might be better if you describe what you are trying to accomplish instead of how to accomplish it? :-)
On Tuesday, November 8, 2016 at 10:19:37 AM UTC-7, Matthieu Pizenberg wrote: > > Hi, I am currently struggling with port subscriptions in a submodule > (`Part`) > reused multiple times in a bigger (`Group`) module like: > > -- In Group.elm > type alias Model = > { parts : Array Part.Model } > > I've been using the following "batching" technique (here are the relevant > parts of 3 files: Part.elm, Ports.elm, Group.elm) > > -- Part.elm > > type Msg > = PortMsg (Some, Values) > > update msg model = > case msg of > PortMsg (some, values) -> (...) -- using Debug.log here to see how > many times this is called > > subscriptions : Model -> Sub Msg > subscriptions model = > Ports.portFunction PortMsg > > > -- Ports.elm > > port portFunction : ((Some, Values) -> msg) -> Sub msg > > > -- Group.elm > > type alias Model = > { parts : Array Part.Model } > > type Msg > = PartMsg Int Part.Msg > > subscriptions : Model -> Sub Msg > subscriptions model = > Sub.batch > <| Array.toList <| Array.indexedMap (Sub.map << PartMsg) (Array.map Part > .subscriptions model.parts) > > > The problem I face is that when a Sub Msg is processed, the updates of all > the parts are triggered instead of just the only one > that should be subscribing to the msg (I verified it with the `Debug.log` > mentionned in the code). > This means that if I have 10 parts in the group, it will trigger the > update function of the right part and also of the 9 other parts that should > not be updated with this sub msg. > This is a huge efficiency problem in addition to potentially modifying my > models incorrectly if I don't care somehow in the update function. > > I fear I have come to this issue by design flaws since I'm not finding a > way to overcome it. > Does anyone have an idea of what I'm doing wrong ? > -- 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 elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.