Это больше похоже на неподдерживаемую функцию, чем на ошибку, но я решил записать ее.
При обновлении с 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);
}
Было очень удобно использовать необязательный динамический сегмент на родительском маршруте для загрузки пользовательской модели по умолчанию, вместо того, чтобы загружать ее для каждого отдельного дочернего маршрута.
Я почти уверен, что вы все еще можете сделать это, передав 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.
Самый полезный комментарий
Это блокирует для нас 2.10 и 2.11. Рад попытаться исправить, если кто-то подтвердит, что это регресс.