Ember.js: ember 2.10 undefined route динамический сегмент больше не работает.

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

Это больше похоже на неподдерживаемую функцию, чем на ошибку, но я решил записать ее.

При обновлении с 2.9.1 до 2.10 я столкнулся со следующим исключением.

"Assertion Failed: You attempted to define a `{{link-to "timecards"}}` but did not pass the parameters required for generating its dynamic segments. You must provide param `login` to `generate`."
#app/router.js
this.route('timecards', {path: '/timecards/:login'}, function() {
  this.route('index', { path: '/' });
  this.route('timecard-day', {path: '/day/:date'});
  this.route('pay-period', {path: '/pay-period/:date'});
});

#app/routes/timecards.js #model hook
model(params) {    
  let login = params.login || this.get('currentUser.login');
  return this.store.peekAll('user').findBy('login', login);
}

Было очень удобно использовать необязательный динамический сегмент на родительском маршруте для загрузки пользовательской модели по умолчанию, вместо того, чтобы загружать ее для каждого отдельного дочернего маршрута.

Ember 2.10 Inactive Needs Bug Verification Needs Submitter Response

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

Это блокирует для нас 2.10 и 2.11. Рад попытаться исправить, если кто-то подтвердит, что это регресс.

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

Я почти уверен, что вы все еще можете сделать это, передав undefined и реализовав пользовательский хук сериализации.

Добавленное здесь сообщение об ошибке является довольно большой победой для людей в целом, и я бы предпочел оставить его, если возможно ...

@rwjblue, передавая undefined помощнику по ссылке, выдает следующее предупреждение: This link-to is in an inactive loading state because at least one of its parameters presently has a null/undefined value, or the provided route name is invalid.

У меня также были проблемы с:

{{link-to 'projects.project.tasks' project}}
  this.route('projects', function() {
    this.route('project', { path: ':id' }, function() {
      this.route('tasks');
    });
  });

Ошибка Ember сообщала о неопределенном id .
Быстрое решение этой проблемы заключалось в изменении :id в маршрутизаторе на :project_id

Я думаю, что это ненастоящее исправление, и оно заслуживает того, чтобы его квалифицировали как ошибку. В противном случае информации об изменении поведения роутера не было.

@Exelord , не имеющий отношения к первоначально описанной ошибке, а не ошибкой. Мы специально документируем, что реализация по умолчанию требует, чтобы :modelname_id работала из коробки. Если вы используете настраиваемое поле, вам придется повторно реализовать сериализацию / десериализацию в соответствующем маршруте.

@Exelord (в качестве примечания, не имеющего прямого отношения к этой проблеме) ... Я не уверен, задокументировано это или нет, но я не думаю, что вы можете использовать один и тот же идентификатор для динамического сегмента более одного раза в маршрутизаторе . Поэтому я бы избегал использования ": id", а также избегал бы использования ": modelname_id" более одного раза. (например, при необходимости снова можно использовать ": newmodelname_id", просто что-то другое)

@rwjblue @ sly7-7, поэтому кажется, что для этой проблемы нет чистого решения, верно?

@arenoir, можешь ли ты воспроизвести эту проблему в

@locks @pixelhandler
У вас есть право, ребята. Спасибо за помощь и объяснение. Но действительно работало до 2.10.
Я предполагаю, что это была ошибка или неожиданное поведение.

@pixelhandler ладно, вот и пустяк.

: point_up: похоже хорошее воспроизведение. этот ярлык можно удалить

Я не понимаю, следует ли рассматривать это как регресс или я должен исправить это в приложении.

Это блокирует для нас 2.10 и 2.11. Рад попытаться исправить, если кто-то подтвердит, что это регресс.

Такая же проблема для меня, как описано @arenoir

Сегодня столкнулся с той же проблемой 👎

@jakeleboeuf У меня была такая же проблема, и обновление до 2.13.1 исправило ее. Какая у тебя версия?

[РЕДАКТИРОВАТЬ]
Здесь 2 часа ночи, и мой мозг почти ушел в глубокий космос. Я просто понял, что ошибся. Это все еще продолжается ...

Если кто-то столкнется с этой проблемой, возможно, это:

import Controller from 'ember';
import { alias } from 'ember-computed';

export default Controller.extend({
  deployments: alias('model')
});

Обратите внимание, что я неправильно импортирую Contoller . Это должно быть import Controller from 'ember-controller'; . Это если вы используете ember-cli-shims, что и используется в моем текущем проекте. Я потерялся в этом около часа, прежде чем сдался, вернулся и ясно увидел, что я делал не так.

Здесь длинный снимок, но я столкнулся с этой проблемой, когда случайно переопределил собственный Object классом Ember Object с помощью чего-то вроде:

const { Object } = Ember;

Это приводило к сбою моего хука модели (где вызывается Object.create ) и, по какой-то причине, выброшенное исключение, упомянутые динамические сегменты не присутствовали. Я думаю, это похоже на то, что @alvincrespo упоминает в своем комментарии выше.

@lrdiv да, я думаю, это со мной происходит.

Assertion Failed: You attempted to define a `{{link-to "control.templates.show"}}` but did not pass the parameters required for generating its dynamic segments. _ember.default.extend is not a function

@brunowego Да, это та же ошибка, что и у меня. В нашем случае кажется, что это скорее вводящее в заблуждение исключение, чем реальная ошибка.

@lrdiv, это тоже происходило со мной, хороший улов! : v:

Что я делал, так это деструктурировал Ember и точно заменял нативный Object на то, что в противном случае было Ember.Object . Поэтому я изменил имя на что-то вроде const EmberObject = Ember.Object в объявлении и использовании, и все пошло правильно. Я бы тоже не назвал это ошибкой, поэтому я согласен с вами почти во всем, что вы написали выше: stuck_out_tongue_winking_eye:

@Exelord @acorncom @alvincrespo @arenoir @asvny @bjornharrtell @brunowego @carlbennettnz @dustinfarris @jakeleboeuf @locks @lrdiv @nightsh @rwjblue @ sly7-7 @tarikozket , это все еще проблема, возможно, мы должны закрыть или создать новое воспроизведение это, что ты думаешь?

На данный момент закрытие, не стесняйтесь снова открывать, если вы можете воспроизвести в текущем выпуске Ember.

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