我将UI路由器设置为在网址中包含查询参数,但是当我这样做时,它破坏了我的应用上的搜索功能。
我的州是这样的:
.state('home', {
url: '/home',
templateUrl: 'home/home.html',
controller: 'HomeCtrl'})
.state('search', {
url: '/search?q',
templateUrl: 'search/search.html',
controller: 'SearchCtrl'
});
我在HomeCtrl和SearchCtrl中都有这段代码:
$scope.searchTerms = $stateParams.searchTerms;
HomeCtrl基本上用作自动完成/查询页面。
然后我有了这个:
$state.go('search', {q: $scope.searchTerms});
在HomeCtrl上的getSuggestions函数和SearchCtrl中的搜索函数
为了使这个工作,我必须搜索两次......?我输入查询并点击回车,查询出现在网址中,然后我必须再次按Enter键才能显示结果。如果我点击搜索按钮,它根本不起作用:(
如果我注释掉$state.go
行,搜索有效,但我在网址中丢失了查询参数,反之亦然。 似乎就像$scope
以某种方式获得turned off
?
我应该使用ui-sref
(更常见)而不是$state.go
进行链接吗?我想将$state.go
代码放在按钮元素上还是什么?
我做错了什么...以便搜索工作,我在网址中有查询参数?