我正在建立一个平台来管理我所在的考试。我使用MEAN-Stack。
除了删除“klausur”(德语考试)外,一切正常。守则如下。如果我点击表格的任何对象上的最后一个链接(使用“deleteKlausur(klausur)”点击),而不是瞬间对象,但我的表格中删除了我的最后一个链接。在DB内部,删除正确的一个。如果我再次单击相同的按钮,服务器会崩溃,因为它尝试再次删除相同的ID,给我一个关于null对象的问题。
<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);
});
}});
谢谢你,甚至读完整件事!希望你能帮忙!
答案 0 :(得分:2)
您正在使用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);
}
});
}});