我正在尝试使用angularJS,nodeJS和JS提交一种JSON数据。但是,在提交时,表单不会捕获正文数据并将其发送到postgres数据库。我知道记录正在db中更新,因为我有一个字段“updatedAt”,它将更新时间戳更改为最近的时间戳。我已经尝试在一个updateform模型中将所有内容组合在一起,但这没有帮助,也阻碍了在html页面上显示记录中的数据。我不确定为什么angular不捕获表单数据并发送它。 这是带有angularJS片段的html:
<!DOCTYPE html >
<html ng-app = "todo">
<body>
<div class="container">
<div ng-controller="TodoCtrl">
<form ng-submit="updateTodo(updateform)" role="form" ng-init="updateform = {}">
<div class="datagrid">
<table>
<thead>
<tr>
<th> ID </th>
<th> Name </th>
</tr>
</thead>
<tbody>
<tr ng-repeat="todo in todos | filter:{id:todoId} | orderBy:'id' | limitTo: 1 track by $index">
<td>
<input type="hidden" ng-model="updateform.id" ng-init="updateform.id = todo.id">
{{todo.id}}
</td>
<td>
<div class="form-group">
<input class="form-control" ng-model="updateform.todo" type="text" value="{{todo.owner}}" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<button type="submit"><strong>Update</strong></button>
</div>
</form>
</div>
</div>
</body>
从观察网络来看,身体反应不会从表格中获取任何数据;我有点亏本。我尝试用不同的模式重写它,但无济于事。 更新: 以下是updatetodo和updateform的JS模型片段:
$scope.updateform = {
Name: '',
};
$scope.updateTodo = function() {
$http.post('/todoupdate/'+$scope.todoId, {
name: $scope.updateformName
}).success(function (data,status, headers, config) {
$scope.todos.push({
name: $scope.updateformName
});
}).error(function (data,status, headers, congif) {
console.log("whoopsies: "+ data)
});
};
这是nodeJS片段:
exports.updatetodos = function (req, res) {
models.Todo.find({
where: {
id: req.params.id
}
}).then(function(todo) {
if(todo) { // if the record exists in the db
todo.updateAttributes({
name: req.body.name,
}).then(function(todos) {
res.json(todos.dataValues);
}).catch(function(error){
console.log("ops: " + error);
res.status(500).json({ error: 'error' });
});
};
});
};