AngularJs - 控制器如何接收带参数的 $state.go

AngularJs - How does a controller receive $state.go with parameters

如果这是我的状态改变事件:

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

MyStateCtrl 是如何获取这些值的?

我试过:

   var param1 = $stateParams.param1
   ....


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

都没有成功。

感谢异常值:

// 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;

在您的状态定义中,您必须在 url 键的值中定义您的参数。

编辑:为澄清起见,以下内容应在状态定义中作为 key/properties 之一:

url: 'myurl/:myparam'

但是,值得注意的是,这会将 myparam 添加到 url。如果您不想更改 URL,则可以执行以下操作(来自 ui-router 的新功能):

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

在这两种情况下,您都可以通过调用 $stateParams.myparam 来简单地获取值。

值属性设置参数在传入之前的默认值。squash: true确保该值不会影响url。

更多信息:

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