我正在使用 AngularJS 1.6.3
我正在尝试通过id获取数据,但我的角度方面无法正常工作
服务器端:
app.get("/user/:id", function(req,res){
testDb.findOne({_id : req.params.id}, function(err, doc){
res.send(doc);
res.statusCode = 200;
});
});
AngularJS方面:
var UserCtrl = myApp.controller('UserCtrl', function($scope,$http){
$scope.user = null
$scope.getByID = function() {
$http.get("/user/" + id).then(function(response){
console.log("get");
$scope.user = response.data;
});
}
getByID();
});
我收到错误“id未定义”。但我想从网址上获取它。
答案 0 :(得分:2)
最后,我使用$ routeParams找到了解决方案。
控制器:
var UserCtrl = myApp.controller('UserCtrl', function($scope,$http,$routeParams){
$scope.user = null;
var id = $routeParams.id;
$scope.getByID = function() {
$http.get("/user/" + id).then(function(response){
console.log("get");
$scope.user = response.data;
});
}
getByID();
});
答案 1 :(得分:1)
在调用时将参数传递给函数
#include <algorithm>
#include <cstdint>
#include <vector>
struct Point {
std::vector<uint32_t> vec{};
};
std::vector<uint32_t> inter_section(const Point& p1, const Point& p2)
{
auto v1 = p1.vec;
auto v2 = p2.vec;
std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
std::vector<uint32_t> v3;
std::set_intersection(v1.begin(), v1.end(),
v2.begin(), v2.end(),
std::back_inserter(v3));
return v3;
}
int main () {
Point p1, p2;
std::vector<uint32_t> res = inter_section(p1, p2);
}
答案 2 :(得分:0)
您可以使用$ state来获取状态参数。
var UserCtrl = myApp.controller('UserCtrl', function($scope,$http,$state){
$scope.user = null;
$scope.getByID = function() {
$http.get("/user/" + $state.params.id).then(function(response){
console.log("get");
$scope.user = response.data;
});
}
$scope.getByID();
});
答案 3 :(得分:0)
安装ui-router。
bower install --save angular-ui-router#0.3.1
链接index.html中的脚本。
&lt;!doctype html&gt;
&lt; html lang =“en_US”&gt;
&LT; HEAD&GT;
&lt; script type =“text / javascript”language =“javascript”charset =“utf-8”src =“lib / angular.js”&gt;&lt; / script&gt;
&lt; script type =“text / javascript”language =“javascript”charset =“utf-8”src =“lib / angular-ui-router / angular-ui-router.js”&gt;&lt; / script&gt;
&LT; /头&GT;
&lt; body ng-app =“myApp”&gt;
&lt; div ui-view&gt;
&LT; / DIV&GT;
&LT; /体&GT;
&LT; / HTML&GT;
在app.js中添加ui路由器依赖项。
var myApp = angular.module('helloworld',['ui.router']);
在config中定义状态。
您可以定义$ state以将id作为状态参数传递给页面。
myApp.config(function($stateProvider){
$stateProvider
.state('home', {
url: '/home/:id',
templateURL:'home_page.html',
controller: 'UserCtrl'
}
});
});
var UserCtrl = myApp.controller('UserCtrl', function($scope,$http,$stateParams){
$scope.user = null;
$scope.getByID = function() {
$http.get("/user/" + $stateParams.id).then(function(response){
console.log("get");
$scope.user = response.data;
});
}
$scope.getByID();
});
最后,重定向到ID为
的页面来自JavaScript :$ state.go('home',{id:'12345'});
来自html :&lt; a ui-sref =“home({id:'12345'})”&gt;主页&lt; / a&gt;
答案 4 :(得分:0)
我希望这对你有所帮助。
我建议您使用params部分传递变量,如下所示 AngularJS To Node JS
AngularJS代码
$http({
method : "GET",
url : "http://localhost:4800/p",
params:{"tagId":"5"}
}).then(function mySucces(response) {
console.log("success");
}, function myError(response) {
});
节点JS
app.get('/p', function (req, res) {
console.log(req.query.tagId)
console.log("call");
});