【问题标题】:Angular passes wrong object in ng-repeat (MEAN-Stack)Angular 在 ng-repeat (MEAN-Stack) 中传递了错误的对象
【发布时间】:2016-03-15 13:02:04
【问题描述】:

我正在为我的学院建立一个管理考试的平台。我使用 MEAN 堆栈。

除了删除“klausur”(德语考试)外,一切正常。代码如下。如果我单击表的任何对象上的最后一个链接(使用“deleteKlausur(klausur)”单击),而不是瞬时对象,但我的最后一个链接在我的表内被删除。在数据库内部,删除了正确的那个。如果我然后再次单击同一个按钮,服务器就会崩溃,因为它试图再次删除相同的 ID,给我一个关于空对象的问题。

<table class="table table-hover table-striped">
            <thead>
            <th>ID</th>
            <th>Name</th>
            <th>Datum</th>
            <th>Semester</th>
            <th>Aufgabenzahl</th>
            <th>Teilnehmer</th>
            <th>Aktionen</th>
            </thead>
            <tbody>
            <tr ng-repeat="klausur in klausuren">
                <td>{{klausur._id}}</td>
                <td>{{klausur.name}}</td>
                <td>{{klausur.gehaltenAm | date:'dd.MM.yy'}}
                    <br/>{{klausur.gehaltenAm | date:'H:mm'}}
                </td>
                <td>{{klausur.semester}}</td>
                <td>{{klausur.aufgaben.length}}</td>
                <td>{{klausur.teilnehmer.length}}</td>
                <td><a href="#/klausuren/{{klausur._id}}/edit" class="btn btn-default" style="width:100%">Klausur
                    ändern</a><br/>
                    <a href="" ng-click="deleteKlausur(klausur)" class="btn btn-danger" style="width:100%">Klausur löschen</a></td>
            </tr>
            </tbody>

我的 JS(使用 Angular)脚本如下:

app.controller('KlausurListController', function ($scope, $http) {
$http.get('http://localhost:3000/klausuren').success(function (response) {
    $scope.klausuren = response;
}).error(function (err) {
    $scope.error = err;
});

$scope.deleteKlausur = function (klausur) {
    $http.delete('http://localhost:3000/klausuren/'+ klausur._id).success(function(res){
        $scope.klausuren.pop(klausur);
    });
}});

谢谢你,甚至阅读整本书!希望你能帮忙!

【问题讨论】:

  • 请添加response对象

标签: javascript angularjs web-services rest mean-stack


【解决方案1】:

您正在使用pop(),它只删除数组中的最后一个元素。

要删除正确的,您需要在数组中找到它的索引并使用splice()

$scope.deleteKlausur = function (klausur) {
    $http.delete('http://localhost:3000/klausuren/'+ klausur._id).success(function(res){
        var index = $scope.klausuren.indexOf(klausur);
        if(index !== -1){
           $scope.klausuren.splice(index,1);
        }            
    });
}});

【讨论】:

  • 我已经用 pop 制作了一个用户管理系统,它工作了哈哈!但是非常感谢,它现在可以完美运行了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 2017-08-03
  • 2017-08-20
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多