我试图通过url将标识符的值传递给快速路由器,我要传递的变量是我从$ routeParams.IDR正确获取的IDR,现在我必须传递它$ http,但我无法做到。
那是我的controller.js ($ routeParams.IDR工作正常)
app.controller("rutaDestinosCtrl", function($scope, $http, userService, $routeParams){
vm = this;
vm.destinos = [];
var requestData = {
'IDR': $routeParams.IDR //$routeParams.IDR is for example: 5
};
vm.funciones = {
obtenerDestinos : function(){
$http({
method: "GET",
url: '/privadas/rutas/obtenerDestinosRuta',
requestData,
headers: {'auth-token': userService.token}
})
.then(function(respuesta){
vm.destinos = respuesta.data.data;
}, function(respuesta){
console.log("Error:", respuesta.status);
})
} //obtenerDestinos
}//funciones
vm.funciones.obtenerDestinos();
});
传递令牌过滤器并正确到达此方法后:
router.get('/obtenerDestinosRuta', function(req,res){
var query = "SELECT * FROM public.\"Destino\" D " +
" JOIN public.\"RutaDestino\" RD ON D.\"IDD\" = RD.\"IDD\"" +
" WHERE \"IDR\" = " + req.body.IDR+ " ORDER BY D.\"IDD\" ASC";
console.log(query);
db.query(query).spread(function(result, metadata){
res.json({
data: result
})
}).catch(function(err){
res.status(500).send("Error: "+ err);
})
});
我无法获得我在RequestData中存储的值(这将是5),我在控制台" req.body.IDR"中尝试了几种没有结果的方法。未定义,如果我改变" req.body.IDR"在价值5的陈述中,完美地运作,任何关于如何做到的想法?
这是来自console.log:
的查询结果SELECT * FROM public。" Destino" D加入公众。" RutaDestino" RD ON d" IDD" = RD。" IDD"在哪里" IDR" = 未定义订购D。" IDD" ASC
问候。
答案 0 :(得分:2)
你能把你的路线定义吗?
在路线定义中,您必须指定预期参数,如:
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/routeName/:IDR', {templateUrl: 'template.html', controller: myCtrl})
}]);
请注意":IDR"路线中的价值。
然后在您的控制器中,您可以使用$ routeParams.IDR
访问它答案 1 :(得分:-1)
谢谢大家,最后我找到了同样问题的其他帖子:angular.http params
但是,在简历中,Angular.http提供了一个由$ http发送params的选项,名为' params'。如果你必须使用方法" GET"那就很好。在我的情况下,使用它后,工作完美。这是我的代码:
在controller.js上我使用了 params 和 config :
app.controller("rutaDestinosCtrl", function($scope, $http, userService, $routeParams){
console.log("Controlador rutaDestinosCtrl");
vm = this;
vm.destinos = [];
vm.funciones = {
obtenerDestinos : function(){
var data = {
IDR: $routeParams.IDR
};
var config = {
params: data,
headers : {'auth-token': userService.token}
};
$http.get('/privadas/rutas/obtenerDestinosRuta', config)
.then(function(respuesta){
//Acciones cuando sea una respuesta correcta
vm.destinos = respuesta.data.data;
}, function(respuesta){
//Acciones cuando sea una respuesta erronea
console.log("Error:", respuesta.status);
})
} //obtenerDestinos
}//funciones
vm.funciones.obtenerDestinos();
});
为了获得IDR的价值,我使用了 req.query.IDR 。
router.get('/obtenerDestinosRuta', function(req,res){
console.log(req.query.IDR);
var query = "SELECT * FROM public.\"Destino\" D " +
" JOIN public.\"RutaDestino\" RD ON D.\"IDD\" = RD.\"IDD\"" +
" WHERE \"IDR\" = " + req.query.IDR + " ORDER BY D.\"IDD\" ASC";
console.log(query);
db.query(query).spread(function(result, metadata){
res.json({
data: result
})
}).catch(function(err){
res.status(500).send("Error: "+ err);
})
});