Ember.js: [2.15.0] {{link-to}} dentro de un parcial dejó de funcionar

Creado en 1 sept. 2017  ·  25Comentarios  ·  Fuente: emberjs/ember.js

Después de actualizar a 2.15.0, algunas de nuestras pruebas comenzaron a fallar porque un {{#link-to}} dentro de un parcial dejó de funcionar.

Este es el {{link-to}} en cuestión . Cuando se renderiza, no hay errores inmediatos, pero el href generado es solo # y el atributo data-test-user-id no se muestra durante la prueba. Al hacer clic en el enlace, aparece 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.

Todo lo demás dentro del parcial aún funciona bien, es solo el enlace el que falla.

Cambiar el parcial a un componente solucionó el problema.

Bug Ember 2.15

Comentario más útil

Reproducción en 2.15 . El mismo giro en 2.14 .

Todos 25 comentarios

Me he encontrado con un problema similar en 2.15, parece que un renderizado parcial dentro de un bloque generado de un componente no recibe los parámetros generados por ese componente.

Ejemplo:

// -name.hbs
<p>{{name}}</p>

componente.js

export default Component.extend({
  name: "Ivan"
})

template.hbs

{{yield name}}

alguna-ruta-plantilla.hbs

{{#my-component as |name|}}
  {{partial "name"}}
{{/my-component}}

En este caso, la variable {{name}} en el parcial no está definida.

Lo mismo sucede con una iteración #each. El valor de #each no se pasa al contexto del parcial.

{{#each visibleContent as |record index|}}
  {{partial rowTemplate}}
{{/each}}

Tanto el registro como el índice están indefinidos en el parcial.

Reproducción en 2.15 . El mismo giro en 2.14 .

Curiosamente, todavía puedo hacer referencia a la propiedad de una variable "perdida" por su nombre, por ejemplo, en rowTemplate podría hacer record.id pero no (get record "id") . No estoy seguro si eso es de alguna ayuda para depurar el problema.

¿Es este comportamiento un legado o hay un enfoque alternativo que debería considerarse? Hemos intentado usar componentes en lugar de parciales, pero para nuestra aplicación más grande todavía hay muchos casos en los que este error está rompiendo cosas. En este punto, no podemos actualizar y me sorprende que esto no afecte a más personas.

No, este no es un comportamiento heredado per se, pero es bastante poco común. Debería _totalmente_ migrar al uso de componentes siempre que pueda (es mucho más sencillo razonar sobre ello), pero deberíamos solucionar esto lo antes posible.

@rwjblue ¿Algún consejo en el que debería empezar a buscar para ayudar a solucionar este problema?

Envié https://github.com/emberjs/ember.js/issues/15674 con algunos casos de pruebas fallidas. Parece que el problema no es tan simple como acceder a los valores de propiedad enlazados dentro del parcial (al menos no lo parecía con mis pruebas). Creo que el problema subyacente tiene que ver con la forma en que generamos las referencias utilizadas por cosas como if , unless , with y get .

Lamentablemente, no tengo una pistola humeante a la que apuntar. :(

tampoco podemos actualizar debido a este error. similar a @ thec0keman , tenemos una aplicación de

no nos quedan muchos parciales, pero lo suficiente como para que esto sea un bloqueador para nosotros hasta que tengamos tiempo para migrar / probar los parciales restantes a los componentes

Este realmente debería tener una prioridad más alta, los parciales están rotos desde 2.15 y evitan que las personas actualicen de 2.14 a 2.16.

+1

Voy a echar un vistazo a esto la semana que viene después de EmberFest.

Extendí el @Serabe y descubrí que si una propiedad con el mismo nombre se define en el controlador, los parciales obtienen el valor correcto. Pero si un valor en una matriz es undefined el parcial todavía piensa que tiene un valor verdadero.

Este es un error en Glimmer. Consulte en el número de referencia.

Se lanzó una nueva versión de luz tenue con la corrección. Después de actualizar la versión de luz tenue, este error debería corregirse. Abrí una solicitud de extracción para actualizar la versión brillante.

Para su información: la actualización a Glimmer 0.29 es un gran esfuerzo (y es poco probable que suceda antes de Ember 3.0.0), @chadhietala retrocedió la corrección a la rama 0.25. Necesitamos lanzar eso como una versión de parche y actualizar a esa versión en su lugar. Intentaré hacer estos lanzamientos hoy ...

@rwjblue LMK si hay algo en lo que pueda ayudar con el lanzamiento que incluye la rama 0.25 parcheada (ya que estoy trabajando en la actualización de Intercom en este momento). Por lo que puedo decir, aún no ha llegado al canario de brasas.

El mismo problema también existe si se usa with helper:

{{#with someProperty as |youNameIt|}}
  {{partial somePartial}}
{{/with}}

Probablemente el parche también solucionará esto, ¡pero seguro que lo menciono aquí!

Hola. ¿Se ha publicado una solución para este problema? Por lo que puedo decir, la mayoría de los ayudantes se ven algo afectados cuando se usan en partial . ¿Existe alguna solución?

Se ha lanzado Ember 2.16.1 que debería solucionar los problemas con los parciales. Avísame si sigues teniendo problemas

Si bien estos problemas se han solucionado, para su información, acabo de encontrar otro problema con los parciales:

https://github.com/emberjs/ember.js/pull/15797

Trabajaré para arreglar esto más tarde hoy

¿Están completamente seguros de que se ha resuelto para 2.15? El twiddle de @Serabe (https://github.com/emberjs/ember.js/issues/15621#issuecomment-326823615) aún falla en 2.15.3, pero funciona en 2.16.1.

Por cierto, he notado que si modificas el parcial para escribir name , en realidad imprime el valor correcto ...

image

No lo es. Ember 2.15 no es un LTS, así que no creo que llegue una solución.

Confirmar.

Oh, ok. Pensé que la corrección que se transfirió a glimmer 0.25 significaría que esto también funcionaría en Ember 2.15. Supongo que pasaremos directamente a 2.16 entonces. ¡¡Gracias!!

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