/ / Funkcja łączenia nie działa - javascript, angularjs, splice

Funkcja łączenia nie działa - javascript, angularjs, splice

oto mój problem. Próbuję usunąć obiekt z tablicy, ale funkcja łączenia wydaje się sprowokować awarię.

$http({
method : "POST",
url : "getDatesBasket",
data:   {"mission":pos_id},
async:false
}).then(function successCallback(response) {
var rep = response["data"];
var repSplit = rep.split(",");
var posSplit = repSplit[0];
var posTemp = posSplit.split(":")[1];
for (kPos = 0; kPos < $scope.datePos.length; kPos++) {
alert("BEFORE " +$scope.datePos[kPos].dateMax);
if(posTemp==$scope.datePos[kPos].pos){
alert("start suppression");
datePos.splice(kpos,1);
alert("end suppression");
}
alert("AFTER " +$scope.datePos[kPos].dateMax);
}

po uruchomieniu widzę pola ostrzeżeń BEFORE i start suppression ale nie end suppression, to tak, jakby funkcja łączenia spowodowała awarię kodu.

EDYTOWAĆ

Oto datePos, jest to tablica z tak zbudowanym obiektem Wykonuję żądanie ajax, aby uzyskać jakieś dane, a następnie wpycham te dane do karty. Jest to więc obiekt z dwoma kluczami, pozycją i danymi

  $http({
method: "POST",
url: "getDatesBasket",
data: {
"mission": pos_id
},
async: false
}).then(function successCallback(response) {
var rep = response["data"];
var repSplit = rep.split(",");
var posSplit = repSplit[0];
var dateSplit = repSplit[1];
var posTemp = posSplit.split(":")[1];
var date = dateSplit.split(":")[1];
var myPos = {
pos: posTemp,
dateMax: date
};
$scope.datePos.push(myPos);

Odpowiedzi:

2 dla odpowiedzi № 1

Musisz podzielić tę samą tablicę, która jest zdefiniowana w twoim zasięgu, a także używasz małych liter w splocie. kPos . Więc musisz splecić w ten sposób.

$scope.datePos.splice(kPos,1);

0 dla odpowiedzi nr 2

Właściwie zapominasz używać $ scope. Oto zaktualizowany kod ..

for (kPos = 0; kPos < $scope.datePos.length; kPos++) {
alert("BEFORE " +$scope.datePos[kPos].dateMax);
if(posTemp==$scope.datePos[kPos].pos){
alert("start suppression");
$scope.datePos.splice(kpos,1);
alert("end suppression");
}
alert("AFTER " +$scope.datePos[kPos].dateMax);
}

0 dla odpowiedzi № 3
for (kPos = $scope.datePos.length-1; kPos>=0; kPos--) {
alert("BEFORE " +$scope.datePos[kPos].dateMax);
if(posTemp==$scope.datePos[kPos].pos){
alert("start suppression");
$scope.datePos.splice(kpos,1);
alert("end suppression");
}
alert("AFTER " +$scope.datePos[kPos].dateMax);
}

spróbuj jak wyżej.