Как передавать объекты по маршрутам в Ember?

Допустим, у меня есть 3 маршрута, вложенных друг в друга:

/users - shows UserList
  - /:id - shows UserDetail
     - /address - shows the 'Address' tab of a 'user' object

В этом случае маршруту /address нужен объект user, который есть у маршрута /:id.

Его не нужно получать с сервера, так как маршрут /:id уже получил его. Ему просто нужен указатель на этот объект.

Как передать объект, полученный маршрутом /:id, маршруту /address?


person pdeva    schedule 02.01.2016    source источник


Ответы (1)


Вы можете использовать метод modelFor на своем маршруте. Например, ваш маршрут address может выглядеть так:

export default Ember.Route.extend({
    model(params, transition) {
        return this.findModel('address', params.address_id);
    }

    setupController(controller, model) {
        controller.set('address', model);
        controller.set('user', this.modelFor('users.id'));
    }
});

Теперь вместо свойства model ваш контроллер теперь имеет доступ к свойствам address и user.

person GJK    schedule 02.01.2016
comment
где определен метод findModel и что он делает? - person pdeva; 02.01.2016
comment
Это просто ярлык, определенный на маршруте. Этот вызов эквивалентен this.store.find('address', params.address_id). - person GJK; 02.01.2016