Angularjs用户界面路由器-通过附加程序';计划外';参数

Angularjs用户界面路由器-通过附加程序';计划外';参数,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个简单的状态: .state('search', { url: '/search', templateUrl: 'views/search.html', controller: 'search' }) 当使用搜索状态或/search路由时,我想将任何额外的计划外参数传递给控制器: ui-sref="search({foo:1, bar:2})" // would call '#/search?foo=1&bar2', // match the stat

我有一个简单的状态:

.state('search', {
    url: '/search',
    templateUrl: 'views/search.html',
    controller: 'search'
})
当使用
搜索
状态或
/search
路由时,我想将任何额外的计划外参数传递给控制器:

ui-sref="search({foo:1, bar:2})" 
// would call '#/search?foo=1&bar2', 
// match the state and pass foo and bar to the controller (through $stateParams)
当我尝试此操作时,它与路由器的其他选项匹配:(

我已经阅读了很多解决方案,这些解决方案暗示要在状态中声明每个参数:

.state('search', {
    url: '/search?param1&param2&param3?...',
})
但我不能这样做,因为参数列表没有真正定义,并且根据搜索的内容一直在变化

有没有办法做到这一点?或者我在什么地方错了

Thx


EDIT:当我尝试直接调用此url:
#/search?foo=1
时,状态
search
匹配,但
foo
参数从不转到$stateParams,该参数为空。我不知道如何将其输入

.state('search', {
   params: ['param1','param2','param3'],
   templateUrl: '...',
   controller: '...'
});

ui-sref="search({param1:1, param2:2})"

归功于

也许您可以通过
搜索({query:{foo:1,bar:2,baz:3,…}})
,这样查询将始终被填充,并包含尽可能多的参数need@clement_frndz它几乎成功了。我得到了
query:'[Object]“
。但是这个想法很好。我认为我的需要是很明显的……不知道如何成功……似乎这个功能不可用。这里有一个解决方法,可以帮助你克服这个问题。如果你在$stateParams中得到查询对象,会有什么问题?它是空的吗?@clement\u frndz它不是一个对象。它是一个str正在说“[对象]”…;)