gpt4 book ai didi

angularjs - UI 路由器和查询参数

转载 作者:行者123 更新时间:2023-12-04 03:19:25 25 4
gpt4 key购买 nike

我使用 Angular、UI Router 和 Elasticsearch 构建了一个小型搜索应用程序,我试图在结果页面的 url 中获取 UI Router 查询参数。

我正在努力实现这一目标

domain.com/search?user_search_terms

有了这个
.state('search', {
url: '/search?q',

我在 Controller 中像这样初始化 searchTerms 和 $stateParams
vm.searchTerms = $stateParams.q || '';

然后在我的 Controller 的搜索功能中,我有这个
 vm.search = function() {
$state.go('search', {q: vm.searchTerms});
...

一切正常,直到我尝试实现 UI 路由查询参数。我仍然可以获得搜索建议,从一个状态转换到另一个状态,但搜索中断。

我以为我需要在 config {} 中实现 Angular $http get params,但后来我意识到我只是在尝试使用 UI 路由器获取查询参数。似乎我已经使用 UI 路由器正确设置了所有内容以获取查询参数,但是......我做错了什么?

最佳答案

对于查询参数,您应该使用 $state.params 而不是 $stateParams
状态配置:

stateProvider.state({
name: 'search',
url: '/search?q',
//...
}

Controller 来自:
function fromCtrl ($state) {
$state.go('search', {q: vm.searchTerms});
}

或模板/HTML 链接来自:
<a ui-sref="search({q:'abc'})">my Link</a>

Controller 至:
function toCtrl ($state) {
this.searchTerms = $state.params.q;
}

更新:使用 $transition$对于新版本 >= 1.0.0 ( PLUNKER DEMO )
上面两个版本的代码是一样的,只是需要修改 toCtrl ...
function toCtrl ($transition$) {
this.myParam = $transition$.params().q;
}

如果您的 searchTerms 是一个对象,您可以使用 JSON.stringify()JSON.parse()
如果您仍有任何疑问,请查看这些帖子:

How to extract query parameters with ui-router for AngularJS?

AngularJS: Pass an object into a state using ui-router

关于angularjs - UI 路由器和查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42258522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com