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

AngularJs-控制器如何接收带参数的$state.go,angularjs,angular-ui-router,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"

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

$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键的值中定义参数

编辑:为了澄清,以下内容应作为键/属性之一出现在状态定义中:

url: 'myurl/:myparam'
但是,值得注意的是,这会将myparam添加到url中。如果不希望更改URL,则可以执行以下操作(ui路由器的更新功能):

在这两种情况下,只需调用$stateParams.myparam即可获得值

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

有关更多信息:


继续阅读$stateParams服务和gotcha。如果路由不包含这些参数,则需要解决此问题。您所展示的是执行此操作的方式。因此,问题必须在其他地方,要么对问题进行抨击,要么向我们展示更多代码。配置中的stateprovider部分会很有帮助。您必须在您所在的州拥有可用的参数。
   params: {
          myparam: {
            value:  null,
            squash: true
          }
    }