Preciso passar e receber dois parâmetros para o estado que eu quero passar para o uso ui-sref
do ui-router.
Algo como usar o link abaixo para fazer a transição do estado para home
with foo
e bar
parâmetros:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Recebimento foo
e bar
valores em um controlador:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Eu pego undefined
por$stateParam
no controlador.
Alguém poderia me ajudar a entender como fazê-lo?
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': {
em sua rota em branco ou você também pode configurar como string de consulta.Respostas:
Eu criei um exemplo para mostrar como. A
state
definição atualizada seria:E este seria o controlador:
O que podemos ver é que a casa estatal agora possui um URL definido como:
o que significa que os parâmetros no URL são esperados como
Esses dois links passarão corretamente argumentos para o controlador:
Além disso, o controlador consome em
$stateParams
vez de$stateParam
.Link para o documento:
Você pode conferir aqui
params : {}
Há também uma configuração nova e mais granular
params : {}
. Como já vimos, podemos declarar parâmetros como parte deurl
. Mas com aparams : {}
configuração - podemos estender essa definição ou até introduzir parâmetros que não fazem parte do URL:As configurações disponíveis para parâmetros são descritas na documentação do $ stateProvider
Abaixo está apenas um extrato
Podemos chamar esses parâmetros da seguinte maneira:
Confira em ação aqui
fonte
url: "/:id?foo&bar"
Você não precisa necessariamente ter os parâmetros dentro do URL.
Por exemplo, com:
Você poderá enviar parâmetros para o estado, usando:
Obviamente, se você recarregar a página uma vez no
home
estado, perderá os parâmetros de estado, pois eles não são armazenados em nenhum lugar.Uma descrição completa desse comportamento está documentada aqui , na
params
linha dastate(name, stateConfig)
seção.fonte
Você simplesmente digitou incorretamente
$stateParam
, deve ser$stateParams
(com um s). É por isso que você fica indefinido;)fonte