Parece mais um recurso sem suporte do que um bug, mas pensei em registrá-lo.
Ao atualizar de 2.9.1 para 2.10, encontrei a seguinte exceção.
"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);
}
Foi muito útil usar um segmento dinâmico opcional na rota primária para carregar um modelo de usuário padrão em vez de ter que carregá-lo para cada rota secundária individual.
Tenho quase certeza de que você ainda pode fazer isso passando undefined e implementando um gancho de serialização personalizado.
A mensagem de erro adicionada aqui é uma grande vitória para as pessoas em geral, e eu prefiro mantê-la por perto, se possível ...
@rwjblue passando indefinido para o auxiliar de link gera este aviso: 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.
Eu também tive problemas com:
{{link-to 'projects.project.tasks' project}}
this.route('projects', function() {
this.route('project', { path: ':id' }, function() {
this.route('tasks');
});
});
O erro Ember disse sobre id
indefinidos.
A solução rápida para isso foi alterar :id
no roteador para :project_id
Acho que não é uma correção real e merece ser qualificado como um bug. Caso contrário, não havia informações sobre como alterar o comportamento do roteador.
@Exelord que não está relacionado ao bug originalmente descrito e não é um bug. Documentamos especificamente que a implementação padrão requer :modelname_id
para funcionar fora da caixa. Se você estiver usando um campo personalizado, terá que reimplementar serializar / desserializar na respectiva rota.
@Exelord (como
@rwjblue @ sly7-7 então parece que não há uma
@arenoir, você pode fazer uma reprodução desse problema, parece um bug. Ter um repositório do problema ajudará a diagnosticar o problema e também fornecerá a verificação do bug.
@locks @pixelhandler
Você tem o direito, pessoal. Obrigado pela ajuda e explicação. Mas de fato estava funcionando antes de 2.10.
Acho que agora foi um bug ou comportamento inesperado.
@pixelhandler ok, aqui está um twiddle.
: point_up: parece uma boa reprodução. esse rótulo pode ser removido
Estou confuso se isso deve ser considerado uma regressão ou se devo consertar na aplicação.
Isso está bloqueando 2.10 e 2.11 para nós. Fico feliz em tentar consertar se alguém puder confirmar que isso é uma regressão.
O mesmo problema para mim descrito por @arenoir
Encontrando o mesmo problema hoje 👎
@jakeleboeuf Eu estava tendo o mesmo problema e a atualização para a
[EDITAR]
São 2 da manhã aqui e meu cérebro está quase indo para o espaço profundo. Acabei de perceber que testei errado. Ainda continua ...
Caso alguém tenha esse problema, pode ser este:
import Controller from 'ember';
import { alias } from 'ember-computed';
export default Controller.extend({
deployments: alias('model')
});
Observe que estou importando Contoller
incorretamente. Deve ser import Controller from 'ember-controller';
. Isso se você estiver usando ember-cli-shims, que é o que meu projeto atual está usando. Fiquei perdido nisso por cerca de uma hora antes de desistir, voltar e ver claramente o que estava fazendo de errado.
Tiro improvisado aqui, mas eu encontrei esse problema ao substituir acidentalmente a classe nativa Object
com a classe Object do Ember por meio de algo como:
const { Object } = Ember;
Isso estava fazendo com que meu gancho de modelo (onde Object.create
é chamado) falhasse e, por algum motivo, a exceção lançada mencionava que os segmentos dinâmicos não estavam presentes. Acho que isso é semelhante ao que @alvincrespo menciona em seu comentário acima.
@lrdiv sim, acho que isso está acontecendo comigo também.
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 Sim, é o mesmo erro que eu estava recebendo. Em nosso caso, parece que isso é mais uma exceção enganosa do que um bug real.
@lrdiv isso também estava acontecendo comigo, bom partido! : v:
O que eu estava fazendo era desestruturar o Ember e substituir precisamente o Object
nativo pelo que seria Ember.Object
. Então, mudei o nome para algo como const EmberObject = Ember.Object
na declaração e uso e tudo correu da maneira certa. Eu também não chamaria de bug-bug, então concordo com você em praticamente tudo que você escreveu acima: stick_out_tongue_winking_eye:
@Exelord @acorncom @alvincrespo @arenoir @asvny @bjornharrtell @brunowego @carlbennettnz @dustinfarris @jakeleboeuf @locks @lrdiv @nightsh @rwjblue @ sly7-7 @tarikozket ainda é um problema, talvez devêssemos fechar ou criar uma nova reprodução isso, o que você acha?
Fechando por enquanto, fique à vontade para reabrir se puder reproduzir na versão atual do Ember.
Comentários muito úteis
Isso está bloqueando 2.10 e 2.11 para nós. Fico feliz em tentar consertar se alguém puder confirmar que isso é uma regressão.