好吧我想做的事情很简单。 我有一张这样的桌子:
<table>
<tr ng-repeat="message in messages">
<td>{{message.id}}</td>
<td>{{message.subject}}</td>
<td>{{message.content}}</td>
<td>{{message.date}}</td>
</tr>
</table>
在我的server.js中,我写了这样的api
app.delete('/messages/:id',function(req,res){
var idm = req.params.id
Message.find({
where : {
id : idm
}
})
.success(function(messsage) {
Message.destroy({
where :{
id :idm
}
})
.success(function(){
res.status(202).send('deleted message')
})
})
})
$scope.deleteMessage = function(message){
var idm=$state.id
$http.delete('/messages/'+idm,message)
.succes(function(){
$scope.status='deleted'
$state.go($state.current,{},{reload : true})
})
.error(function(){
$scope.status = 'not deleted'
})
}
当我点击我的视图中的按钮时,又名:
<input type="number" ng-model="message.id" placeholder="Id to delete" />
代码在后端运行,它说:执行从id ='undefined'的消息中删除。所以我想问题是我没有通过id corectly。
我尝试使用邮递员对某个ID发出删除请求,但它确实有效。 谢谢你的时间。
答案 0 :(得分:0)
我假设您正在使用角度ui-router。尝试将$state.id
改为$stateParams.id
,将$state
/messages/:id
作为网址进行猜测。 More info
$scope.deleteMessage = function(message){
var idm=$stateParams.id
$http.delete('/messages/'+idm,message)
.succes(function(){
$scope.status='deleted'
$state.go($state.current,{},{reload : true})
})
.error(function(){
$scope.status = 'not deleted'
})
}
顺便说一句,(与问题无关)改善server.js
文件的一种方法如下:
app.delete('/messages/:id',function(req,res){
var idm = req.params.id
Message.find(idm)
.success(function(messsage) {
message.destroy()
.success(function(){
res.status(202).send('deleted message')
});
});
});
或:
app.delete('/messages/:id',function(req,res){
var idm = req.params.id
Message.destroy({where: {id: idm}})
.success(function(affectedRows) {
if (affectedRows == 1) {
res.status(202).send('deleted message')
} else {
// something went wrong and none or more than one messages were deleted
}
});
});
答案 1 :(得分:0)
这很简单:
$scope.deleteChampion = function(champion){ $http.delete('/champions/'+champion.id) $state.go($state.current,{},{reload : true}) } all i had to do was add " + champion.id