AngularJs - 控制器如何使用参数接收$ state.go

时间:2015-03-10 21:52:10

标签: angularjs angular-ui-router

如果这是我的州改变事件:

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

1 个答案:

答案 0 :(得分:0)

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

编辑:为了澄清,以下内容应该在州定义中作为关键/属性之一:

url: 'myurl/:myparam'

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

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

你可以通过在两种情况下调用$ stateParams.myparam来获取值。

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

了解更多信息:

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