Ember.js: Использование this.transition для пропуска загрузки модели

Созданный на 22 дек. 2013  ·  3Комментарии  ·  Источник: emberjs/ember.js

Я не уверен, что это намеренное поведение, но позвольте мне объяснить. Если я использую transitionTo на маршруте, который имеет динамические сегменты, метод модели на маршруте назначения никогда не вызывается. По сути, я просто просматриваю параметры с идентификатором, и я все еще хочу загрузить правильную модель.

Если я обновлю страницу с правильным URL-адресом, модель загрузится нормально. Я собрал код для демонстрации.

http://codepen.io/anon/pen/LsfhB

Текущая версия выйдет из консоли «Я здесь». Если вы посмотрите на IndexRoute, там есть закомментированный переход. Если это включено, «Я здесь» никогда не срабатывает.

Ожидается ли это? Если да, то где мне загрузить свою модель для маршрута подтверждения?

Самый полезный комментарий

Если вы измените переход на this.transitionTo('confirm', 1); он будет работать так, как вы ожидаете.

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

Документы API, вероятно, можно было бы использовать с примером передачи идентификаторов вместо полных моделей: http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo

Надеюсь, это имеет смысл

Все 3 Комментарий

Если вы измените переход на this.transitionTo('confirm', 1); он будет работать так, как вы ожидаете.

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

Документы API, вероятно, можно было бы использовать с примером передачи идентификаторов вместо полных моделей: http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo

Надеюсь, это имеет смысл

Теперь это имеет смысл. Мой первоначальный вопрос после вашего комментария заключался в том, как передать несколько параметров? Но похоже, что вы просто передаете их как отдельные аргументы.

this.transitionTo('confirm.url', 1, 'the-slug-I-want');

Для меня это хорошо работает.

Вопрос здесь, если у вас есть маршрут с суб-маршрутами, все с динамическим сегментом:
например
this.route ('организация', {путь: 'организаций /: идентификатор_организации'}, function () {
this.route ('проект', {путь: 'проекты /: идентификатор_проекта'}, function () {
this.route ('экран', {путь: 'экраны /: screen_id'});
});
и я нахожусь на другом маршруте, например, на маршруте авторизации. Когда я перехожу к this.transitionTo ('organization.project.screen',
{organization_id: 'grege23-234-4c3e-96fe-234423'},
{project_id: '234234-23423-4b99-a492-234'},
{screen_id: '34534-48f4-471d-ad17-3'45});
Ничего не вижу, потому что модель не загружена.
Как ты мог пойти на это?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги