javascript - Cómo recargar la ruta actual en Ember.js?
(3)
Desde un controlador use transitionToRoute
:
this.transitionToRoute(''playlist'', newModel);
Desde una ruta use transitionTo
:
this.transitionTo(''playlist'', newModel);
Por ejemplo, imagina que tienes una acción en tu controlador
App.PlaylistController = Ember.ArrayController.extend({
actions: {
grabNewModel: function(){
//get some new model
this.transitionToRoute(''playlist'', newModel);
}
}
});
en Ember.js tengo ruta con modelo. ¿Me pueden ayudar, cuando estoy en la lista de reproducción de la ruta, cómo volver a cargar esta ruta (o establecer nuevos datos para el modelo) llamada por devolución de llamada desde otra función JS? He estado buscando documentación durante tanto tiempo, pero no hay ayuda para mí.
App.PlaylistRoute = Ember.Route.extend({
setupController: function(controller, model) {
$.getJSON(''api/playlist.php?'' + Math.random().toString(36), function (data) {
controller.set(''model'', data);
});
}
});
¡Muchas gracias!
Hay dos formas de hacerlo.
Una es escribir una acción en la ruta de la lista de reproducción y llamar a this.refresh () dentro de ella. Para obtener más información, puede visitar el método de refresh Guía Ember para la ruta.
La otra forma está en su controlador dependiendo de la situación en la que necesite volver a cargar el uso de su ruta
this.get(''target.target.router'').refresh();
cualquiera de los dos te ayudaría a refrescar tu ruta.
Una pequeña nota del método de actualización debajo de las guías de brasas:
Actualice el modelo en esta ruta y en las rutas secundarias, activando los enlaces beforeModel, model y afterModel de forma similar a cómo se ingresan las rutas al realizar la transición desde otra ruta. Los parámetros de ruta actuales (por ejemplo, article_id) se pasarán a los ganchos de modelo respectivos, y si se devuelve un modelo diferente, setupController y los enganches de ruta asociados también se volverán a disparar.
Parece que la solución en la respuesta no funcionará para la ruta actual. Tuve un problema similar y probé la solución aquí y funcionó.
http://discuss.emberjs.com/t/refresh-current-view-page-after-language-change/4291/5#post_5
En tu ruta
actions: {
sessionChanged: function() {
this.refresh();
}
}
y en tu controlador.
observeSession: function() {
this.send("sessionChanged");
}.observes("session.isAuthenticated"),