我想从ng repeat ui-route中删除一个td

时间:2015-01-13 10:26:18

标签: angularjs node.js angular-ui-router sequelize.js

好吧我想做的事情很简单。 我有一张这样的桌子:

<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发出删除请求,但它确实有效。 谢谢你的时间。

2 个答案:

答案 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