如何将查询string附加到Angular ui-router中的URL

我对AngularJS很新颖。 我使用ui-router和node.js作为我的UI服务器来调用另一台服务器的API。 现在,我无法将查询string附加到URL,具体取决于用户input(下拉select)。

我的AngularJS控制器代码:

$scope.getResults = function() { server.getResults($scope.myColor, $scope.mySize) .success(function(data) { results = data; }); }; 

以上function的AngularJS服务:

 app.factory('server', ['$http', function($http){ return { getResults : function(color, size) { var req = {}; req.color = color; req.size = size; return $http({ method: 'GET', url: 'results', params : req }); } } }]); 

ui路由器在Angular中:

 $stateProvider.state('home', { url: '/home', templateUrl: '/home.html', controller: 'MainCtrl', data:{ pageTitle: 'blah' } }) 

在Node.js中,我有这样的路线:

 app.get("/results", function (req, res) { var api = 'some api call/' + req.query.color + '/' + req.query.size; request(api, function (error, response, api) { if (!error && response.statusCode == 200) { res.json({ Color: req.query.color, Size: req.query.size, Answer: api }); } }); }); 

我想让浏览器url从/ home到/ home?color = Red && size = Large

很明显,我没有这样做,浏览器的url现在不是dynamic的。 请显示如何正确执行此操作。

使用reloadOnSearch: false选项可在状态参数发生更改时停止重新加载当前路由。

 $stateProvider.state('home', { url: '/home?color&size', templateUrl: '/home.html', controller: 'MainCtrl', data:{ pageTitle: 'blah' }, reloadOnSearch: false //would not refresh state, for location changes. }) 

调节器

 $scope.getResults = function() { //change parameter of URL usingn $location.search. $location.search('color', $scope.myColor); $location.search('size', $scope.mySize); server.getResults($scope.myColor, $scope.mySize) .success(function(data) { results = data; }); };