如何获得没有params的状态URL?

时间:2014-07-15 05:19:08

标签: angularjs angular-ui-router

我在angular-ui路由器中有一个状态:

.state('example', {
    url: '/example?foo&bar',
    templateUrl: '/partials/example.html',
    controller: 'ExampleController'
})

ExampleController 中,我这样做:

console.log($state.href('example', {}, {inherit: false}));

然后我将我的应用导航到/example?foo=1&bar=2 我希望我的控制器只记录 / example (以后用于创建规范网址)
但它始终记录当前状态/example?foo=1&bar=2

我做错了什么? 感谢

1 个答案:

答案 0 :(得分:0)

ui-router有2个信息,我们可以用于记录。

  • $state 名称 (在我们的案例中为“示例”)
  • url 字符串,代表1)州名的模式 + 2)参数名称​​('/ example?foo& bar'在我们的案例中)

就是这样 - 没有任何分开的信息:状态网址没有参数...

以下an example显示了州所包含的内容。所以我们甚至用id参数扩展上面的状态:

.state('example2', {
  url: '/example2/:id?foo&bar',
  templateUrl: '/partials/example.html',
  controller: 'ExampleController',
})

如果我们观察到这样的当前状态 <a ui-sref="example2({id: 222, foo:2,bar:4})"> ,我们可以看到:

{
  "params": {
    "id": "222",
    "foo": "2",
    "bar": "4"
  },
  "current": {
    "url": "/example2/:id?foo&bar",
    "templateUrl": "/partials/example.html",
    "controller": "ExampleController",
    "name": "example2"
  },
  "transition": null
}

所以,我建议:如果你需要loggin只是一个状态..使用$state.current.name