查询参数不能与ui-router一起使用

时间:2016-09-08 10:16:38

标签: angularjs angular-ui-router angular-routing angular-ui-router-extras

我需要使用带有查询参数的完整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的版本:     &#34; angular&#34;:&#34; 1.4.10&#34;,     &#34; angular-sanitize&#34;:&#34; 1.4.10&#34;,     &#34; angular-ui-router&#34;:&#34; 0.2.10&#34;

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

1 个答案:

答案 0 :(得分:1)

a working example

切换状态定义..首先是更具体的,接下来是一般的

  .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,则会使用它...

检查here