Функция склеивания не работает

вот моя проблема. Я пытаюсь удалить объект из массива, но функция splice, кажется, вызывает сбой.

$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);
    }

при запуске этого я вижу окна предупреждений BEFORE и start suppression, но не end suppression, это похоже на то, что функция соединения вызвала сбой кода.

РЕДАКТИРОВАТЬ

Вот datePos, это массив с объектом, созданным таким образом, что я выполняю запрос ajax, чтобы получить некоторые данные, а затем помещаю эти данные на вкладку. Итак, это объект с двумя ключами, pos и data.

  $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);    

person Community    schedule 10.07.2017    source источник
comment
Если вы не видите предупреждение start suppression, значит, ваше условие if не оценивается как true. Проверьте консоль, чтобы увидеть ошибки.   -  person Steve    schedule 10.07.2017
comment
Что может пойти не так, когда вы меняете массив, который вы сейчас перебираете?   -  person Rob    schedule 10.07.2017


Ответы (3)


Вы должны соединить тот же массив, который определен в вашей области. А также вы используете строчную букву внутри вашего соединения. Это должно быть kPos. Так что вам нужно соединить так.

$scope.datePos.splice(kPos,1);
person Vivz    schedule 10.07.2017
comment
На самом деле я только что проверил его, и он все еще не работает. - person ; 10.07.2017
comment
Что такое $scope.datePos? Можете ли вы опубликовать код для этой переменной? - person Vivz; 10.07.2017
comment
добавляю в первый пост - person ; 10.07.2017
comment
Когда происходит предупреждение, вы указываете значение области видимости $scope.datePos[kPos].dateMax alert(BEFORE +$scope.datePos[kPos].dateMax); - person Vivz; 10.07.2017
comment
И ваш posTemp не определен в вашем js, и вы ссылаетесь на него в своем представлении? - person Vivz; 10.07.2017
comment
Нет, posTemp не отображается, я просто использую его для сохранения данных ответа. Ничто в массиве posDate не печатается позже. - person ; 10.07.2017
comment
На самом деле значение rep - repSplit ....posTemp, которое вы можете видеть, куда я помещаю данные, также находится чуть выше for. Это для того, где я пытаюсь, находится внутри случая успеха запроса ajax, получающего удаленные данные. Итак, posTemp хорошо определен. И я захожу внутрь if, потому что я печатаю подавление запуска - person ; 10.07.2017
comment
О, мой плохой, вы правы. Я думаю, что переменная имеет небольшой регистр внутри соединения datePos.splice (kpos, 1), где kpos - это kPos в цикле for - person Vivz; 10.07.2017
comment
Блин, ты, должно быть, прав... я этого вообще не видел, должно быть, так оно и есть. Уверен, я думаю, я дам вам знать позже, если это работает. - person ; 10.07.2017
comment
Теперь я отлично работаю, спасибо. Я поменяю очки ^^ - person ; 10.07.2017
comment
Лол, рад быть полезным. :) - person Vivz; 10.07.2017

На самом деле вы забыли использовать $scope. Вот обновленный код..

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);
}
person Surjeet Bhadauriya    schedule 10.07.2017
comment
На самом деле я только что проверил его, и он все еще не работает - person ; 10.07.2017

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

попробуй как выше.

person Johnny Tung    schedule 10.07.2017