2015-03-10 2 views
0

Если это мое состояние события изменения:

$state.go('MyState', { 'param1':'jimbob', 'param2':37}); 

Каким образом MyStateCtrl приобрести эти ценности?

Я пробовал:

var param1 = $stateParams.param1 
    .... 


    var param1 = $state.params.param1 
    .... 

каждый без успеха.

Благодаря Outlier:

// state (via json) 
"name" : "app.MyStateName", 
"url": "/myView123/:param1/:param2", 


// controller 1 
$state.go('app.MyStateName', {param1: someValue1, param2: someValue2}) 


// controller 2 
var param1 = $stateParams.param1; 
var param2 = $stateParams.param2; 
+0

https://github.com/angular-ui/ui-router/wiki/URL-Routing#user-content-url-parameters читать дальше весь путь вплоть до услуги $ stateParams и получения. Для этого вам понадобится разрешение, если маршрут не включает эти параметры. –

+0

То, что вы показали, это то, как вы это делаете. Таким образом, проблема должна быть где-то в другом месте, либо сделать plunker проблемы, либо показать нам больше кода. Секция stateprovider в вашей конфигурации будет полезна. Вы должны иметь параметры, доступные в вашем штате. – ribsies

ответ

0

В вашем определении состояния, вы должны определить свои параметры в значение ключа URL.

EDIT: Для уточнения, следующий должен быть в определении состояния в качестве одного из ключевых/свойств:

url: 'myurl/:myparam' 

Тем не менее, стоит отметить, что это добавит MyParam к ссылке. Если вы не хотите, чтобы URL, чтобы быть изменен, то вы можете сделать следующее (новая функция от УИ-маршрутизатора):

params: { 
      myparam: { 
      value: null, 
      squash: true 
      } 
    } 

и вы можете просто получить значение с помощью вызова $ stateParams.myparam в обоих случаях ,

Свойство value задает значение по умолчанию для параметра перед его передачей. squash: true гарантирует, что это значение не влияет на URL.

Для получения дополнительной информации:

http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider

Смежные вопросы