Ember.js: El segmento dinámico de ruta indefinida de la brasa 2.10 ya no funciona.

Creado en 30 nov. 2016  ·  22Comentarios  ·  Fuente: emberjs/ember.js

Esto parece más una función no admitida que un error, pero pensé que lo registraría.

Al actualizar de 2.9.1 a 2.10, encontré la siguiente excepción.

"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);
}

Fue bastante útil usar un segmento dinámico opcional en la ruta principal para cargar un modelo de usuario predeterminado en lugar de tener que cargarlo para cada ruta secundaria individual.

Ember 2.10 Inactive Needs Bug Verification Needs Submitter Response

Comentario más útil

Esto nos bloquea 2.10 y 2.11. Me complace intentar una solución si alguien puede confirmar que se trata de una regresión.

Todos 22 comentarios

Estoy bastante seguro de que aún puede hacer esto pasando indefinido e implementando un enlace de serialización personalizado.

El mensaje de error agregado aquí es una gran victoria para la gente en general, y preferiría mantenerlo si es posible ...

@rwjblue al pasar undefined al asistente de enlace arroja esta advertencia: 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.

También tuve problemas con:

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

El error de Ember hablaba de id indefinidos.
La solución rápida para eso fue cambiar :id en el enrutador a :project_id

Creo que no es una solución real y merece ser calificado como un error. De lo contrario, no había información sobre cómo cambiar el comportamiento del enrutador.

@Exelord que no está relacionado con el error descrito originalmente, y no es un error. Documentamos específicamente que la implementación predeterminada requiere :modelname_id para funcionar de inmediato. Si está utilizando un campo personalizado, tendrá que volver a implementar serializar / deserializar en la ruta respectiva.

@Exelord (como

@rwjblue @ sly7-7, por lo que parece que no hay una

@arenoir, ¿puedes hacer una reproducción de este problema? Parece un error. Tener un repositorio del problema ayudará a diagnosticar el problema y también proporcionará la verificación del error.

@locks @pixelhandler
Tienen derecho, chicos. Gracias por la ayuda y la explicación. Pero de hecho estaba funcionando antes de la 2.10.
Supongo que ahora fue un error o un comportamiento inesperado.

@pixelhandler está bien, aquí hay un giro.

: point_up: parece una buena reproducción. esa etiqueta se puede quitar

Estoy confundido sobre si esto debe considerarse una regresión o si debería solucionarlo en la aplicación.

Esto nos bloquea 2.10 y 2.11. Me complace intentar una solución si alguien puede confirmar que se trata de una regresión.

El mismo problema para mí como lo describe @arenoir

Me encontré con este mismo problema hoy 👎

@jakeleboeuf Estaba teniendo el mismo problema y la actualización a 2.13.1 lo solucionó. ¿Qué versión tienes?

[EDITAR]
Son las 2 de la mañana aquí y mi cerebro casi se ha ido al espacio profundo. Me acabo de dar cuenta de que lo probé mal. Todavía continúa ...

En caso de que alguien se encuentre con este problema, posiblemente podría ser este:

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

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

Tenga en cuenta que estoy importando Contoller incorrectamente. Debe ser import Controller from 'ember-controller'; . Esto es si está usando ember-cli-shims, que es lo que está usando mi proyecto actual. Estuve perdido en esto durante aproximadamente una hora antes de darme por vencido, regresar y ver claramente lo que estaba haciendo mal.

Es una posibilidad remota aquí, pero me encontré con este problema al anular accidentalmente el Object nativo con la clase Object de Ember a través de algo como:

const { Object } = Ember;

Esto estaba causando que mi modelo de gancho (donde se llama Object.create ) fallara y, por alguna razón, la excepción lanzada mencionaba que los segmentos dinámicos no estaban presentes. Creo que esto es similar a lo que menciona @alvincrespo en su comentario anterior.

@lrdiv sí, creo que esto me está pasando.

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 Sí, ese es el mismo error que estaba recibiendo. En nuestro caso, parece que esto es más una excepción engañosa que un error real.

@lrdiv esto también me estaba pasando, ¡buen partido! : v:

Lo que estaba haciendo era desestructurar Ember y anular con precisión el Object nativo con lo que de otro modo sería un Ember.Object . Así que cambié el nombre a algo como const EmberObject = Ember.Object en la declaración y el uso y todo salió bien. Yo tampoco lo llamaría un error-error, así que estoy de acuerdo contigo en casi todo lo que escribiste arriba: atascado_al_toma_winking_eye:

@Exelord @acorncom @alvincrespo @arenoir @asvny @bjornharrtell @brunowego @carlbennettnz @dustinfarris @jakeleboeuf @locks @lrdiv @nightsh @rwjblue @ sly7-7 @tarikozket Si esto sigue siendo un problema, tal vez deberíamos cerrar o crear una nueva reproducción esto, ¿qué te parece?

Cerrando por ahora, siéntase libre de volver a abrir si puede reproducir en la versión actual de Ember.

¿Fue útil esta página
0 / 5 - 0 calificaciones