如何访问状态参数(ui-sref)而不将它们包含在angularjs中的状态的URL属性中

时间:2014-12-16 06:52:22

标签: angularjs angular-ui-router ui-sref

This question is might be similar to this but with different requirements。由于我无法发表评论(需要50分),我正在复制这个问题。

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

使用以下链接将状态转换为带有foo和bar参数的主页:

<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未定义。

有人可以帮我理解如何完成它吗?我想在不将其添加到URL

的情况下获得bar

1 个答案:

答案 0 :(得分:2)

如果您的某些参数不应显示在网址中,则需要合并urlparams

.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)
}])

see documentation)。


而且,如果您仍然卡住,请查看此working codepen demo