我使用nodejs和angularjs,但我不明白如何将nodejs中的数据转换为角度,我将把代码留在这里
App.js angular
Var myApp = angular.module ('angularTodo', ['angularUtils.directives.dirPagination']);
MyApp.controller ('mainController', ['$ scope', '$ http', function ($ scope, $ http) {
$ Http.get ('/ api / all'). Then (function (res) {
$ Scope.pacientes = res.data;
$ Scope.sort = function (keyname) {
$ Scope.sortKey = keyname; // set the sortKey to the param passed
$ Scope.reverse =! $ Scope.reverse; // if true make it false and vice versa
}
}). Finally (function () {
$ Scope.example7 + = "(Finally called)";
});
}]);
MyApp.controller ('patient', ['$ scope', '$ http', function ($ scope, $ http)
$ Http.get ('/ patient /: id') .then (function (res) {
$ Scope.new = res.data.pk;
$ Scope.test = "test11";
}). Finally (function () {
$ Scope.example7 + = "(Finally called)";
});
}]);
Routes.js
App.get ('/ patient /: id', function (req, res) {
Var id = req.params.id;
Connection.query ('SELECT * FROM patient WHERE pat_id =?', [Id], function (err, data)
{
If (err)
Console.log ("Error Selecting:% s", err);
Res.json (data [0]);
Console.log (id);
Console.log (data);
});
});
App.get ('/ newinf /: id', isLoggedIn, function (req, res) {
Res.render ('informe.ejs', {user: req.user});
});
问题是$ http.get(' / patient /:id')没有收到ID?如何在angularjs中获取网址的ID?
答案 0 :(得分:0)
在工厂中,您可以定义一个发出http请求的函数。
MyApp.factory('test_factory',function($http,{
factory = {};
factory.get_request = function(params){
return $http({
method: 'GET',
url: 'some_url',
params: params
})
};
return factory
});
在您的控制器中,您可以在工厂中定义http请求(确保DI出厂)。请注意我是如何将对象传递给工厂中的get_request函数的。
MyApp.controller('some_ctrl',function($scope,test_factory){
test_factory.get_request({id:12345}).then(function(data){
console.log(data)
})
});
当然,您可以使用基本相同的语法直接从控制器发出http请求。但是,将请求逻辑分离到工厂通常会更好。
此外,由于您正在发出GET请求,因此查询参数将在发出请求时添加到url字符串中。您可以通过检查大多数浏览器开发人员工具中的网络选项卡来确认。
答案 1 :(得分:0)
您需要自己发送ID作为请求中网址的一部分。在有角度的情况下,您当前正在向/patient/:id
发送请求。尝试使用数据库中患者的有效ID替换角度代码中的:id
。例如:
$http.get('/patient/12')
.then(function (res) {...})
然后, 12应显示为服务器端代码中的req.param.id
。
我还建议您遵循user2263572的建议,并将此逻辑封装到工厂中。