我正在使用带有Angular和Node.js的ui-router作为我对其他服务器的API调用的UI服务器。现在,我的浏览器URL(基于下拉选项的动态)不会映射到服务器。
例如,浏览器网址为" / home?color = Red&& size = Large"当我将用户输入发送到Node时。当我在另一个浏览器窗口中复制并粘贴该URL时,我希望颜色和大小下拉列表已经选择为红色和大号,并且根据显示的选项从API调用中获得结果。我怎么能做到这一点?
我的AngularJS控制器代码:
$scope.getResults = function() {
$location.search('color', $scope.myColor);
$location.search('size', $scope.mySize);
server.getResults($scope.myColor, $scope.mySize)
.success(function(data) {
results = data;
});
};
上述功能的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
});
}
}
}]);
Angular中的ui-router:
$stateProvider.state('home', {
url: '/home',
templateUrl: '/home.html',
controller: 'MainCtrl',
reloadOnSearch: false
})
在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({
Response: api
});
}
});
});
答案 0 :(得分:0)
在你的代码中你编写了查询参数,但是你需要阅读它们,试试这个:
$scope.getResults = function() {
$scope.myColor = $location.search().color;
$scope.mySize = $location.search().size;
server.getResults($scope.myColor, $scope.mySize)
.success(function(data) {
results = data;
});
};