Переход на тот же маршрут с той же моделью

У меня есть модель «Фильтр», и пользователь может изменить эту модель, нажав на страницу.

Поэтому, когда пользователь вносит изменения в модель, я хочу перейти к тому же маршруту, на котором он сейчас находится, потому что URL-адрес отличается в зависимости от деталей модели (я переопределил «сериализацию» на маршруте, чтобы гарантировать, что это так оно и есть).

В настоящее время Эмбер, похоже, игнорирует мою просьбу перейти на тот же маршрут с той же моделью. Модель изменена, и мой шаблон изменен, но я хочу, чтобы URL-адрес также отражал изменение в фильтре.

Как я могу это сделать?

Редактировать:

Вот код в моем 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)

Теперь это работает, как и предполагалось, когда я нахожусь в маршруте «индекс», но если я уже нахожусь в маршруте «списки», модель изменяется, как предполагалось, но замена маршрута не происходит, и, следовательно, мой URL-адрес не обновляется с правильными динамическими сегментами (из моего метода «сериализации» ListingsRoute).


person elsurudo    schedule 17.01.2014    source источник
comment
Пожалуйста, добавьте свой код.   -  person Pheonix    schedule 17.01.2014
comment
Используете ли вы transitionToRoute(emberjs.com/api/classes/) прохождение новой модели?   -  person Ashwin S    schedule 17.01.2014
comment
Как видно из моего кода, теперь я использую replaceRoute, но передаю тот же (но измененный) объект модели.   -  person elsurudo    schedule 17.01.2014


Ответы (1)


Похоже, что Ember ничего не делает, если вы хотите перейти (или заменить, как в случае со мной) на тот же маршрут, на котором вы находитесь, с объектом модели с тем же идентификатором, что и текущая модель.

Итак, мне нужно было клонировать объект, внести нужные изменения и затем выполнить переход.

person elsurudo    schedule 17.01.2014
comment
Как клонировать объект? - person HypeXR; 22.05.2014
comment
Я включаю миксин Ember.Copyable и реализую метод копирования. - person elsurudo; 23.05.2014