Question

I have a "Filter" model, and the user can alter this model by clicking on the page.

So when the user makes a change to the model, I want to transition to the same route he is currently on, because the URL is different depending on the details of the model (I have overridden "serialize" on the route to ensure that this is the case).

As things stand now, Ember seems to ignore my please to transition to the same route with the same model. The model is altered and my template changes, but I want the URL to also reflect the change to the Filter.

How can I do this?

Edit:

Here is the code in my ApplicationController

App.ApplicationController = Ember.Controller.extend
    currentFilter: null

    actions:
        toggleRegion: (region_id) ->
            region = this.store.getById('region', region_id)

            filter = this.get('currentFilter')

            # modify the filter
            if filter.containsAtLeastOneCityOfRegion(region)
                filter.disableRegion(region)
            else
                filter.enableRegion(region)

            this.replaceRoute('listings', filter)

Now, this works as intended when I am in the "index" route, but if I am already in the "listings" route, the model is modified as intended, but route replacement is not happening, and consequently, my URL is not updated with the correct dynamic segments (coming from my ListingsRoute's "serialize" method).

Was it helpful?

Solution

It looks like Ember does a no-op if you want to transition to (or replace, as is the case with me) to the same route you are on, with a model object with the same identity as the current model.

So what I needed to do was clone the object, make the change I needed to make, and then do the transition.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top