Типичная проблема, с которой сталкиваются новички в HTML и AngularJS, — это необходимость передать параметры из одного состояния в другое с помощью ui-router и ui-sref. Например, можно захотеть передать два параметра, foo
и bar
, при переходе к состоянию home
.
Возможно, была предпринята попытка использовать следующий код:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Перейти к состоянию домой с параметрами foo и bar</a>
И в контроллере:
app.controller('SomeController', function($scope, $stateParam) { var foo = $stateParam.foo; //получение fooVal var bar = $stateParam.bar; //получение barVal });
Однако, в контроллере значения $stateParam
оказываются undefined
. Это происходит потому, что правильно получать параметры состояния из сервиса $stateParams
, а не $stateParam
.
Использование $stateParams
Для получения параметров состояния в контроллере следует использовать сервис $stateParams
вместо $stateParam
. Пример:
app.controller('SomeController', function($scope, $stateParams) { var foo = $stateParams.foo; //получение fooVal var bar = $stateParams.bar; //получение barVal });
Также необходимо убедиться, что параметры foo
и bar
определены в состоянии home
. Например:
.state('home', { url: '/home/:foo/:bar', templateUrl: 'home.html', controller: 'SomeController' })
В этом случае, foo
и bar
будут доступны как параметры в URL, и их можно получить с помощью $stateParams
.
В конечном итоге, передача параметров с помощью ui-sref
в ui-router
для контроллера может быть выполнена с использованием сервиса $stateParams
и корректной настройки состояния.
Добавить комментарий