我在控制器中有一个函数应该从客户端检索Google Maps坐标并将其传递给node.js,然后将它们保存到mongoose模式。然而,没有任何反应。控制器部分如下所示:
$scope.createEvent = function() {
$http.post('/api/events', $scope.formData, $scope.latitude, $scope.longitude)
.success(function (data) {
var latitude = $scope.latitude;
var longitude = $scope.longitude;
$scope.formData = {};
$scope.meetings = data;
console.log(data);
})
.error(function(data) {
console.log('Error: ' + data);
});
};
这部分地图初始化函数负责获取坐标
google.maps.event.addListener(map, "click", function (event) {
$scope.latitude = event.latLng.lat();
$scope.longitude = event.latLng.lng();
});
初始化函数也在与$ scope.initialize
相同的控制器中定义routes.js:
app.post('/api/events', function(req, res) {
Event.create({
title : req.body.title,
description: req.body.description
latitude: req.body.latitude,
longitude: req.body.longitude
}, function(err, meeting) {
if (err)
res.send(err);
});
});
以防万一,mongoose架构如下所示:
var eventsSchema = new Schema({
title: String,
description: String,
longitude: String,
latitude: String
});
当用户点击地图时会触发创建操作,因此应该已知纬度和经度,但没有任何反应。如何将此信息发送到节点服务器?
答案 0 :(得分:2)
在发布之前,U必须将这些值放入范围,然后发布到网址... 可能是这些值来自前端并将该值绑定到范围。
$scope.createEvent = function() {
$http.post('/api/events', {
title : $scope.title,
description: $scope.description
latitude: $scope.latitude,
longitude: $scope.longitude
})
.success(function (data) {
$scope.meetings = data;
console.log(data);
})
.error(function(data) {
console.log('Error: ' + data);
});
};
我希望这可以帮助你...
答案 1 :(得分:0)
我的建议是在您的应用中创建工厂服务 angularJS.factory angularJS.$resource
app.factory('Events', ['$resource',
function($resource) {
return $resource('/api/events', {},
{
create: {
method: 'POST'
}
});
}
]);
在您的控制器呼叫面板中
app.controller('yourControllerName', ['$scope','Events'
function($scope,Events) {
$scope.createEvent = function(){
var event = new Events({
title : $scope.title,
description: $scope.description
latitude: $scope.latitude,
longitude: $scope.longitude
});
event.$create(function(data) {
$scope.meetings = data;
console.log(data);
},function(err){
console.log(err);
});
}
}
]);
我希望我能帮助!!