Мне нужно передать и получить два параметра в состояние, которое я хочу перейти на использование ui-sref
UI-маршрутизатора.
Что-то вроде использования ссылки ниже для перевода состояния в home
with foo
и bar
параметры:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Получение foo
и bar
значения в контроллере:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Я получаю undefined
за $stateParam
в контроллере.
Может ли кто-нибудь помочь мне понять, как это сделать?
Редактировать:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: 'SomeController'
}
}
});
javascript
html
angularjs
angular-ui-router
angular-ui
пропускать
источник
источник
url:'.../home/:foo/:bar
'/:foo/:bar': {
в вашем пустом маршруте, или вы можете настроить как строку запроса.Ответы:
Я создал пример, чтобы показать, как. Обновленное
state
определение будет:И это будет контроллер:
То, что мы можем видеть, - то, что у государственного дома теперь есть URL, определенный как:
Это означает, что параметры в URL ожидаются как
Эти две ссылки будут правильно передавать аргументы в контроллер:
Кроме того, контроллер потребляет
$stateParams
вместо$stateParam
.Ссылка на документ:
Вы можете проверить это здесь
params : {}
Также есть новая , более детальная настройка
params : {}
. Как мы уже видели, мы можем объявить параметры как частьurl
. Но сparams : {}
настройкой - мы можем расширить это определение или даже ввести параметры, которые не являются частью URL:Настройки, доступные для параметров, описаны в документации к $ stateProvider
Ниже просто выдержка
Мы можем назвать эти параметры так:
Проверьте это в действии здесь
источник
url: "/:id?foo&bar"
Вам не обязательно иметь параметры внутри URL.
Например, с:
Вы сможете отправить параметры в состояние, используя либо:
Конечно, если вы перезагрузите страницу один раз в
home
состоянии, вы потеряете параметры состояния, поскольку они нигде не хранятся.Полное описание этого поведения описано здесь , под
params
строкой вstate(name, stateConfig)
разделе.источник
Вы просто ошиблись
$stateParam
, это должно быть$stateParams
(с). Вот почему вы получаете неопределенным;)источник