У меня это простое состояние:
.state('search', {
url: '/search',
templateUrl: 'views/search.html',
controller: 'search'
})
И я хотел бы передать любые дополнительные незапланированные параметры контроллеру при использовании состояния 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¶m2¶m3?...',
})
Но я не могу этого сделать, поскольку список параметров не определен и изменяется все время в зависимости от найденного содержимого.
Есть ли способ достичь этого? Или я где-то ошибаюсь?
Спасибо.
EDIT: Когда я пытаюсь вызвать прямо этот url: #/search?foo=1
, search
состояния совпадает, но параметр foo
никогда не переходит в $ StateParams, который пуст. Я не знаю, как это получить.
.state('search', {
params: ['param1','param2','param3'],
templateUrl: '...',
controller: '...'
});
ui-sref="search({param1:1, param2:2})"
Кредит переходит к параметрам для состояний без URL-адресов в ui-router для AngularJS
search({query: {foo: 1, bar: 2, baz: 3, ...}})
, чтобы запрос всегда был заполнен и содержал столько параметров, сколько вам нужноquery: '[Object object]'
. Но идея была хорошей. Я думал, что моя потребность была чем-то довольно очевидным ... Не знаю, как добиться успеха ...