如何将查询字符串附加到 Angular ui-router 中的 URL
How to append query strings to the URL in Angular ui-router
我是 AngularJS 的新手。我正在使用 ui-router 和 node.js 作为我的 UI 服务器,以便 API 调用另一个服务器。现在,我无法根据用户输入(下拉选择)将查询字符串附加到 URL。
我的AngularJS控制器代码:
$scope.getResults = function() {
server.getResults($scope.myColor, $scope.mySize)
.success(function(data) {
results = data;
});
};
Angular上述功能的JS服务:
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 现在不是动态的。请说明如何正确执行此操作。
当状态参数发生变化时,请使用 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;
});
};
我是 AngularJS 的新手。我正在使用 ui-router 和 node.js 作为我的 UI 服务器,以便 API 调用另一个服务器。现在,我无法根据用户输入(下拉选择)将查询字符串附加到 URL。
我的AngularJS控制器代码:
$scope.getResults = function() {
server.getResults($scope.myColor, $scope.mySize)
.success(function(data) {
results = data;
});
};
Angular上述功能的JS服务:
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 现在不是动态的。请说明如何正确执行此操作。
当状态参数发生变化时,请使用 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;
});
};