Erik, that makes such a lot of sense. Thanks for spelling it out. Is there any reason to favour one over the other, otherwise I'm likely to go with 2. Simon
On Friday, 25 November 2016 16:52:20 UTC+1, Erik Lott wrote: > > When you're creating an SPA in elm, you'll generally need to choose one of > two navigation styles: > > *1. Allow the address bar to drive your model* > The standard Navigation package provides this type of functionality. Your > model will respond to changes in the address bar, and your views will > (generally) use view links (a tags) to change the address bar. You may have > a few sprinkles of manual url changing commands throughout the app for > redirection, but for the most part, the majority of url changes are caused > by users clicking on html links in your view. > > The changes flow like this : View --> Address Bar --> Model --> View > > *2. Allow your model to drive the address bar* > In this case, the address bar is simply a reflection of the current state > of your model. There is no need to update the address bar manually, because > it will keep itself in sync with your model. Try using a routing package > like Elm Route Url ( > http://package.elm-lang.org/packages/rgrempel/elm-route-url/latest). Take > a moment and read the package readme. It clearly explains the difference > between the 2 styles of routing. If you use this style of navigation, > you'll need to build your application in such a way that the navigation is > kept within elm and does not require the address bar. For example, rather > than including a tag links in your html view to change the url directly, > your a-tags or buttons will trigger Msg's that will update your model, and > then the address bar will respond to the model change. > > > > > > > > On Friday, November 25, 2016 at 4:32:50 AM UTC-5, Simon wrote: >> >> OK, I just don’t quite understand, even while I have working code! >> >> I have an app where, as the model changes (in particular the value >> representing the ‘page’ of my single page app), the Url is updated with >> this task >> >> Navigation.newUrl (toUrl model) >> >> But as the Url changes, I get a new message from Navigation because of: >> >> main = >> Navigation.programWithFlags >> (Routing.urlParser RouteTo) >> { init = initWithFlags >> , update = Routing.update >> , view = view >> , subscriptions = subscriptions >> } >> >> When first loading the app, this message is useful and I can use it to >> direct to the appropriate opening page. But thereafter this message is >> redundant - I already made all the model changes I wanted before and that >> caused the Url update. Without some care I even get a loop of each Routing >> message causing the >> >> *I suspect I am missing something rather important, but am not sure what?* >> >> One option would be to use anchor tags to cause the switch pages, and >> only do model changes when I get a RouteTo message, but even then I have >> some url changes resulting from the clicking on an element within a page, >> and I don’t think that is a place for anchors. (As I use html urls, rather >> than # ones I also have to be careful not to let the page get reloaded) >> >> > -- 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.
