Ember.js: bras 2.10 segmento dinâmico de rota indefinido não funciona mais.

Criado em 30 nov. 2016  ·  22Comentários  ·  Fonte: emberjs/ember.js

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.

Ember 2.10 Inactive Needs Bug Verification Needs Submitter Response

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.

Todos 22 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações