When using routing I just store the newRoute in the Model in the init function. And, in the update function I just update the new Location in the Model. So, the model always contains an up to date location. Then in the view function I have a case-of statement to show the correct content based on the location stored in the model.
In your update function I see you are not updating the model, but using initialModel instead. Looks to me you are resetting your model to its initial state each time you change the location. Is that what you want?