4

这个问题可能与此类似,但要求不同。由于我无法发表评论(需要 50 分),我正在复制这个问题。

我想简单地访问从控制器内部模板中的 ui-sref 发送的参数,而不在状态 URL 中提及它们。

类似于使用下面的链接使用 foo 和 bar 参数将状态转换为 home :

<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>

在控制器中接收 foo 和 bar 值:

state('home', {
      url: '/:foo',
      views: {
        '***whatIsThis***': {
          templateUrl: 'home.html',
          controller: 'MainRootCtrl'    
        },

    app.controller('SomeController', function($scope, $stateParam) {
      //..
      var foo = $stateParam.foo; //getting fooVal
      var bar = $stateParam.bar; //getting barVal
      //..
    });     

我在控制器中未定义 $stateParam。

有人可以帮助我了解如何完成它吗?我也想获得 bar 而不将其添加到 URL

4

1 回答 1

2

如果您的某些参数不应该出现在 URL 中,则需要组合urland params

.state('home', {
    url: '/:foo',
    params: {
        foo: 'default value of foo',
        bar: 'default value of bar'
    },
    ...
})

然后$stateParams正确使用:

.controller('SomeController', ['$scope', '$stateParams', function ($scope, $stateParams) {
    // ... (use $stateParams)
}])

见文档)。


而且,如果您仍然卡住,请看一下这个工作的 codepen 演示

于 2014-12-16T09:03:10.987 回答