我需要使用带有查询参数的完整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 感谢
答案 0 :(得分: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&id=45">
因此,/:name
也会匹配/load
,但如果首先定义/load
,则会使用它...
检查here