【问题标题】:I want to remove a td from ng repeat ui-route我想从 ng repeat ui-route 中删除一个 td
【发布时间】:2015-03-11 06:39:04
【问题描述】:

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

<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'
        })


    }

当我点击我认为的按钮时:

 &lt;input type="number" ng-model="message.id" placeholder="Id to delete" /&gt;

代码在后端运行,它说:从 id='undefined' 的消息中执行删除。所以我想问题是我没有正确传递 id。

我尝试使用邮递员对某个 id 发出删除请求,它可以工作。 感谢您的宝贵时间。

【问题讨论】:

  • 把 $http.delete('/messages/'+idm,message) 改成 $http.get('/messages/'+idm) 试试看!
  • 您是否在控制器中添加了 $scope.message ?请复制所有控制器和 HTML

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


【解决方案1】:

我假设您使用的是 angular ui-router。尝试将$state.id 更改为$stateParams.id,猜测$state/messages/:id 作为url。 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
      }
    });
});

【讨论】:

  • 感谢您的回答,我自己设法解决了这个问题,但我忘记了这个话题。就是这么简单:$scope.deleteChampion = function(champion){ $http.delete('/champions/'+champion.id) $state.go($state.current,{},{reload : true}) }我所要做的就是添加“+ Champion.id”
  • 你应该把你的解决方案作为另一个答案,所以每个人都可以检查/看到它@mariusraiu
【解决方案2】:

原来如此简单:

 $scope.deleteChampion = function(champion){ $http.delete('/champions/'+champion.id) $state.go($state.current,{},{reload : true}) } all i had to do was add " + champion.id

【讨论】:

    猜你喜欢
    • 2013-11-23
    • 2015-11-29
    • 2015-11-05
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多