style change attribute javascript ember.js routes components router

javascript - change - title css



Actualizar/Volver a cargar la ruta de ascuas desde un componente (2)

Para esto, defina el método refreshCurrentRoute en la ruta más cercana o en el archivo de ruta de la aplicación.

actions:{ refreshCurrentRoute(){ this.refresh(); } }

Desde su componente, debe llamar a la acción refreshCurrentRoute . o puede usar ember-route-action-helper o pasar la acción de cierre.

Tengo un componente, eso es en realidad un diálogo modal. Cuando haya terminado con ese diálogo y presione el botón "Aceptar", quiero permanecer en la página de permanencia desde donde abrí ese diálogo. Lo cual no es difícil.

Pero el problema es que el diálogo cambia los datos (obtengo datos a través de una llamada REST), así que necesito actualizar la ruta en la que ya estoy para reflejar los cambios en los datos.

Como lo llamo desde un componente, no tengo Route así que no puedo llamar a route.refresh() .

Traté de obtener el enrutador:

this.set(''router'', Ember.getOwner(this).lookup(''router:main''));

y hizo la transición a la misma página:

_this.get(''router'').transitionTo(''my-route'')

Pero como la ruta no ha cambiado (¡solo abrí un diálogo), transitionTo no se activa!

¿Hay alguna manera de forzar la activación de transitionTo o actualizar la página en la que estoy?

¡Gracias!


Primero, puede obtener fácilmente el nombre de la ruta actual inyectando el servicio de enrutamiento al componente.
Luego, puede obtener la instancia de ruta actual y aplicar su método de refresh :

// app/components/a-component.js import Component from "ember-component"; import service from "ember-service/inject"; import getOwner from "ember-owner/get"; export default Component.extend({ routing: service("-routing"), actions: { refresh() { const currentRouteName = this.get("routing.currentRouteName"); const currentRouteInstance = getOwner(this).lookup(`route:${currentRouteName}`); currentRouteInstance.refresh(); } } });