ember.js

ember.js - Cómo acceder a los parámetros de consulta de la ruta en Ember 1.7



(5)

En 1.7 Ember debería soportar los parámetros de consulta. No tengo problemas para usarlos en el controlador, pero me gustaría acceder a ellos en Route, idealmente antes del modelo de gancho, pero el modelo de gancho también funcionaría.

Los documentos de la API mencionan un parámetro queryParam para el gancho de BeforeModel, pero si trato de usarlo, siempre está indefinido.

La guía de Parámetros de consulta parece sugerir que los parámetros de consulta deben estar accesibles como parte del primer parámetro para el modelo enganche. Pero eso también está indefinido. Vea el código de abajo para ejemplos.

¿Hay alguna forma de acceder a los parámetros de consulta desde la ruta?

Gracias por tu ayuda.

App.ApplicationRoute = Em.Route.extend({ beforeModel: function(transition, queryParams){ console.log(queryParams.test); //undefined at /?test=123 }, model: function(params){ console.log(params.test); //undefined at /?test=123 } });


Al especificar los parámetros de consulta en el controlador, los params los contendrán automáticamente

ApplicationController = Ember.Controller.extend({ queryParams: [''test''], test: null });


Bastante seguro de que es un error, pero puedes acceder a ellos mientras tanto a través del objeto de transición:

App.ApplicationRoute = Em.Route.extend({ beforeModel: function(transition){ console.log(transition.queryParams.test); } }


En la última versión de abril puede obtener el valor en Ruta como

import Ember from ''ember''; export default Ember.Route.extend({ beforeModel(params){ console.log(params.queryParams.test); //if the parameter contains test as the key } });

Esto solo funciona si locationType es automático en su archivo environment.js.


En la última versión de ember (2.12 en el momento de escribir esta respuesta), se puede acceder a queryParams en el enlace del modelo de la siguiente manera:

import Ember from ''ember''; export default Ember.Route.extend({ queryParams: { test: '''' }, model(params) { console.log(params.test); }, });

Observe que ahora tanto el segmento dinámico como los queryParams son accesibles a través del objeto params . Como params no está disponible en el beforeModel del beforeModel , esta solución funciona cuando tienes que acceder a los queryParams en el queryParams del model .


Si quieres acceder en didTransition action,

didTransition: (queryParams) -> console.log(@get(''queryParams''))