Angular ui-router动态查询字符串定义

Mur*_*rlu 6 javascript angularjs angular-ui-router

我们有一个搜索页面,我们有数千个可以由管理面板定义的搜索属性.特征搜索结果页面有一个这样的URL:

http://example.com/search?a12=3213&a314=412412&a247=1941829&....
Run Code Online (Sandbox Code Playgroud)

当我们想通过使用AngularJS将该页面实现为SPA时angular-ui-router,我无法理解,我们如何定义该路由配置以及如何从查询字符串中读取所有搜索参数.因为ui-router强制在路由配置中定义每个queryparam可能性以使用它们$stateParams.

$stateProvider.state('search', {
    url: '/search?a1&a2&a3&a4&a5' // what about a1314?
    controller: function ($stateParams) {
        console.log($stateParams.a1314);
    }
});
Run Code Online (Sandbox Code Playgroud)

你知道一个解决方法吗?

A.B*_*A.B 2

url: '/search'您可以在搜索路线中使用 $location.search()controller

当不带任何参数调用时,它返回当前 url 的搜索部分(作为对象)。

var searchObject = $location.search();

// => {a12: '3213', a314: '412412'}

console.log(searchObject .a12); //3213
Run Code Online (Sandbox Code Playgroud)

对于路线你可以使用

 url: '/search*' 
Run Code Online (Sandbox Code Playgroud)

所以它会匹配

  • 主要问题是,如果 url 带有未在路由配置中定义的查询参数,ui-router 会将其从 url 中删除并显示没有它的页面。 (2认同)