de-vraag
  • Preguntas
  • Etiquetas
  • Usuarios
Notificaciones
Recompensas
Registracion
Una vez que se registre, se le notificarán las respuestas y los comentarios a sus preguntas.
Entrar
Si ya tiene una cuenta, conéctese para comprobar las nuevas notificaciones.
Habrá recompensas por las preguntas, respuestas y comentarios añadidos.
Más
Fuente
Editar
 skip
skip
Question

Cómo pasar los parámetros usando ui-sref en el ui-router al controlador

Necesito pasar y recibir dos parámetros al estado al que quiero transitar usando "u-sref" de ui-router.

Algo así como usar el enlace de abajo para pasar el estado a "casa" con los parámetros "foo" y "bar":

<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>

Recibiendo valores "foo" y "bar" en un controlador:

app.controller('SomeController', function($scope, $stateParam) {
  //..
  var foo = $stateParam.foo; //getting fooVal
  var bar = $stateParam.bar; //getting barVal
  //..
});     

Me quedo "indefinido" por "StateParam" en el controlador.

¿Podría alguien ayudarme a entender cómo hacerlo?

Editar:

.state('home', {
  url: '/',
  views: {
    '': {
      templateUrl: 'home.html',
      controller: 'MainRootCtrl'

    },

    '[email protected]': {
      templateUrl: 'a.html',
      controller: 'MainCtrl'
    },

    '[email protected]': {
      templateUrl: 'b.html',
      controller: 'SomeController'
    }
  }

});
364 2014-09-03T14:50:39+00:00 3
Radim K&#246;hler
Radim Köhler
Pregunta editada 20º mayo 2015 в 5:07
Programación
javascript
html
angularjs
angular-ui
angular-ui-router
Popular videos
UI Router  / [ ui-sref , multiples vistas , controller , ion-nav-bar ] 🎓
UI Router / [ ui-sref , multiples vistas , controller , ion-nav-bar ] 🎓
hace 1 año
AngularJS ui router parameters
AngularJS ui router parameters
hace 6 años
AngularJS UI-Router Tutorial - Working with Parameters
AngularJS UI-Router Tutorial - Working with Parameters
hace 5 años
7-3 - Navegacion por plantilla  - routerLink - routerLinkActive | Programando en Angular 8
7-3 - Navegacion por plantilla - routerLink - routerLinkActive | Programando en Angular 8
hace 3 años
ui router active state css
ui router active state css
hace 6 años
Tutorial de UI-Router Angularjs en Español
Tutorial de UI-Router Angularjs en Español
hace 8 años
Ui Mixer External Router Configuration
Ui Mixer External Router Configuration
hace 3 años
MONITORIAR EQUIPOS CON UISP
MONITORIAR EQUIPOS CON UISP
hace 1 año
Cómo crear una API con SWAGGER paso a paso
Cómo crear una API con SWAGGER paso a paso
hace 3 años
4.1.4.6 Lab - Configuración Básica de las Características de un Router con IOS CLI
4.1.4.6 Lab - Configuración Básica de las Características de un Router con IOS CLI
hace 8 años
Routing via UI-Router
Routing via UI-Router
hace 6 años
AngularJs UI-Router: Introduction &amp; Getting Started
AngularJs UI-Router: Introduction & Getting Started
hace 5 años
angularjs ui router configuring states
angularjs ui router configuring states
hace 6 años
Número variable de parámetros en la URL | Ruteo | Programando en ASP.NET MVC 5
Número variable de parámetros en la URL | Ruteo | Programando en ASP.NET MVC 5
hace 5 años
AngularFire / Configurando los Estados [ angular-ui-router ] 🎓
AngularFire / Configurando los Estados [ angular-ui-router ] 🎓
hace 5 años
« Anterior
Siguiente »
Solution / Answer
Radim K&#246;hler
Radim Köhler
3º septiembre 2014 в 3:02
2014-09-03T15:02:50+00:00
Más
Fuente
Editar
#25495749

He creado un [ejemplo][1] para mostrar cómo hacerlo. La definición actualizada del "estado" sería:

  $stateProvider
    .state('home', {
      url: '/:foo?bar',
      views: {
        '': {
          templateUrl: 'tpl.home.html',
          controller: 'MainRootCtrl'

        },
        ...
      }

Y este sería el controlador:

.controller('MainRootCtrl', function($scope, $state, $stateParams) {
    //..
    var foo = $stateParams.foo; //getting fooVal
    var bar = $stateParams.bar; //getting barVal
    //..
    $scope.state = $state.current
    $scope.params = $stateParams; 
})

Lo que podemos ver es que el hogar estatal ahora tiene la url definida como:

url: '/:foo?bar',

lo que significa, que los parámentros en la url se esperan como

/fooVal?bar=barValue

Estos dos enlaces pasarán correctamente los argumentos al controlador:

<a ui-sref="home({foo: 'fooVal1', bar: 'barVal1'})">
<a ui-sref="home({foo: 'fooVal2', bar: 'barVal2'})">

Además, el controlador consume $stateParam en lugar de $stateParam.

Enlace a doc:

  • [Parámetros de la URL][2]

Puedes comprobarlo [aquí][3]

params : {}

También hay nuevos, más granulados de ajuste params : {}. Como ya hemos visto, podemos declarar los parámetros como parte de la "curva". Pero con los `parámetros'': {} configuración - podemos extender esta definición o incluso introducir parámetros que no son parte de la url:

.state('other', {
    url: '/other/:foo?bar',
    params: { 
        // here we define default value for foo
        // we also set squash to false, to force injecting
        // even the default value into url
        foo: {
          value: 'defaultValue',
          squash: false,
        },
        // this parameter is now array
        // we can pass more items, and expect them as []
        bar : { 
          array : true,
        },
        // this param is not part of url
        // it could be passed with $state.go or ui-sref 
        hiddenParam: 'YES',
      },
    ...

Los ajustes disponibles para los parámetros se describen en la documentación del [$stateProvider][4]

A continuación se muestra un extracto

  • valor - {objeto|función=}: especifica el valor por defecto de este parámetro. Esto implícitamente establece este parámetro como opcional...
  • array - {boolean=}: (por defecto: false) Si es true, el valor del parámetro será tratado como un array de valores.
  • squash - {bool|string=}: squash configura cómo se representa el valor del parámetro por defecto en la URL cuando el valor actual del parámetro es el mismo que el valor por defecto.

Podemos llamar a estos parámetros de esta manera:

// hidden param cannot be passed via url
<a href="#/other/fooVal?bar=1&bar=2">
// default foo is skipped
<a ui-sref="other({bar: [4,5]})">

Compruébelo en acción [aquí][5]

[1]: http://plnkr.co/edit/r2JhV4PcYpKJdBCwHIWS?p=preview [2]: https://github.com/angular-ui/ui-router/wiki/URL-Routing#url-parameters [3]: http://plnkr.co/edit/r2JhV4PcYpKJdBCwHIWS?p=preview [4]: http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider [5]: http://plnkr.co/edit/r2JhV4PcYpKJdBCwHIWS?p=preview

Radim K&#246;hler
Radim Köhler
Respuesta editada 11º mayo 2015 в 6:56
530
0
Paul Mougel
Paul Mougel
22º abril 2015 в 11:42
2015-04-22T11:42:47+00:00
Más
Fuente
Editar
#25495750

No es necesario tener los parámetros dentro de la URL.

Por ejemplo, con:

$stateProvider
.state('home', {
  url: '/',
  views: {
    '': {
      templateUrl: 'home.html',
      controller: 'MainRootCtrl'

    },
  },
  params: {
    foo: null,
    bar: null
  }
})

Podrás enviar parámetros al estado, usando cualquiera de los dos:

$state.go('home', {foo: true, bar: 1});
// or
<a ui-sref="home({foo: true, bar: 1})">Go!</a>

Por supuesto, si recargas la página una vez en el estado "home", perderás los parámetros del estado, ya que no están almacenados en ninguna parte.

Una descripción completa de este comportamiento está documentada aquí, bajo la fila de "parámetros" en la sección "state(name, stateConfig)`.

107
0
 felixfbecker
felixfbecker
10º agosto 2015 в 1:32
2015-08-10T13:32:46+00:00
Más
Fuente
Editar
#25495751

Simplemente escribiste mal "$stateParam", debería ser "$stateParams" (con una s). Por eso te quedas sin definir ;)

29
0
Comunidades relacionadas 6
JavaScript Es
JavaScript Es
4 622 usuarios
Grupo de JavaScript en español
Abrir telegram
Angular - Comunidad española
Angular - Comunidad española
376 usuarios
En este grupo hablamos de Angular. @js_es, @php_es, @vue_es @java_es @IonicES
Abrir telegram
Angular Framework Español
Angular Framework Español
129 usuarios
Abrir telegram
JavaScript - Comunidad española
JavaScript - Comunidad española
113 usuarios
En este grupo hablamos de JavaScript. @php_es, @es_angular @java_es
Abrir telegram
Angular_es
Angular_es
77 usuarios
Grupo dedicado al framework Angular (https://angular.io). Para más info, por favor consultar el mensaje anclado del grupo!
Abrir telegram
Angular en Español
Angular en Español
47 usuarios
Abrir telegram
Añadir pregunta
Categorías
Todo
Tecnología
Cultura / Recreación
Vida / Artes
Ciencia
Profesional
Negocios
Usuarios
Todo
Nuevo
Popular
1
Виталий Теслюк
Registrado hace 1 día
2
shokir qochqorov
Registrado hace 1 día
3
Roxana Elizabeth CASTILLO Avalos
Registrado hace 1 semana
4
Hideo Nakagawa
Registrado hace 1 semana
5
Sergiy Tytarenko
Registrado hace 1 semana
DE
EL
ES
FR
ID
IT
JA
KO
LT
LV
NL
PT
RU
TR
ZH
© de-vraag 2022
Fuente
stackoverflow.com
bajo licencia cc by-sa 3.0 con atribución