3

我需要使用带有查询参数的完整 url 路由到状态,并根据查询参数在控制器中执行操作。

如果我使用带有变量的简单路由 url,它工作正常:“/load/:portName/:id”

如果我要添加查询参数它不起作用:“/load?portName&id”

上面应该可以通过 url 访问:“/load?portName=TEST&id=343”

我在下面发布了我在 html 中定义的路由和控制器的代码片段:

       $stateProvider
        .state('route0', {
            url:"/",
            templateUrl: '/one.html'
        })
        .state('route1', {
            url:"/starZoom",
            templateUrl: '/two.html'
        })
        .state('route2', {
            url: "/:name",
            templateUrl: function (urlattr) {
                return '/app/' + urlattr.name + '/' + urlattr.name + '.html';
            }
        })
      .state('route3', {
          url:"/load?portName&id",
          views: {
              templateUrl: '/one.html'
          }
        });

HTML:

<div class="viewPanel" 
   ng-controller="StatusSearchController as searchController"
   id="searchStatusContainer"> ....</div>

angular 和 ui-router 的版本:“angular”:“1.4.10”,“angular-sanitize”:“1.4.10”,“angular-ui-router”:“0.2.10”

我想使用 url 直接加载 route3:localhost:4000/load?portName=test&id=45 谢谢

4

1 回答 1

1

一个工作示例

切换状态定义..首先更具体,然后是一般

  .state('route3', {
    url:"/load?portName&id",
    templateUrl: 'tpl.html',
  })
  .state('route2', {
    url: "/:name",
    templateUrl: 'tpl.html',
  })

这些现在可以工作

<a href="#/starZoom">
<a href="#/name">
<a href="#/load?portName=test&amp;id=45">

所以,/:name也会匹配/load,但如果/load首先定义,它将被使用......

在这里检查

于 2016-09-08T10:23:29.557 回答