Necesito pasar y recibir dos parámetros al estado al que quiero transitar usando ui-srefui-router.
Algo así como usar el siguiente enlace para hacer la transición del estado a homecon fooy barparámetros:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Recepción fooy barvalores en un controlador:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Consigo undefinedpara $stateParamen el controlador.
¿Alguien podría ayudarme a entender cómo hacerlo?
Editar:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: 'SomeController'
}
}
});

url:'.../home/:foo/:bar'/:foo/:bar': {en tu ruta en blanco o también puedes configurarlo como cadena de consulta.Respuestas:
He creado un ejemplo para mostrar cómo. La
statedefinición actualizada sería:Y este sería el controlador:
Lo que podemos ver es que la casa del estado ahora tiene una URL definida como:
lo que significa que los parámetros en url se esperan como
Estos dos enlaces pasarán correctamente los argumentos al controlador:
Además, el controlador consume en
$stateParamslugar de$stateParam.Enlace al documento:
Puedes consultarlo aquí
params : {}También hay una nueva configuración más granular
params : {}. Como ya hemos visto, podemos declarar parámetros como parte deurl. Pero con laparams : {}configuración, podemos ampliar esta definición o incluso introducir parámetros que no forman parte de la URL:La configuración disponible para los parámetros se describe en la documentación de $ stateProvider
A continuación hay solo un extracto
Podemos llamar a estos parámetros de esta manera:
Compruébalo en acción aquí
fuente
url: "/:id?foo&bar"No necesariamente necesita tener los parámetros dentro de la URL.
Por ejemplo, con:
Podrá enviar parámetros al estado, utilizando:
Por supuesto, si vuelve a cargar la página una vez en el
homeestado, perderá los parámetros de estado, ya que no se almacenan en ningún lugar.Aquí se documenta una descripción completa de este comportamiento , debajo de la
paramsfila de lastate(name, stateConfig)sección.fuente
Simplemente escribiste mal
$stateParam, debería ser$stateParams(con una s). Es por eso que te vuelves indefinido;)fuente