2015-03-01 4 views
1

У меня проблема с моей функцией удаления! Пока я удаляю данные, которые поступают из моего json-файла, все работает нормально. Но если вы добавите еще несколько данных - это приведет к удалению неправильных поездок или дней в зависимости от того, будет ли он старше или новее (например, если вы введете более старую дату, на которую он удалит следующий день или поездку). Проблема отображается в обеих функциях удаления (deleteTrip и delTripDay). Должна быть ошибка с индексом. Есть идеи ?Удалить динамические сгенерированные данные?

Кроме того, я хотел бы экспортировать данные в json, который работает до сих пор. Если вы добавите некоторые данные, он поместит новые данные в конец моего json-объекта. Я хотел бы добавить фильтр к моей функции сохранения, чтобы отсортировать новые сохраненные данные JSON так же, как показано выше!

-> нисходящая дата!

Есть ли решение для сортировки поездок и ДНЕЙ ???

plunkr

Код:

(function() { 
    var app = angular.module('showTrips', []); 


     app.controller('TripController', ['$scope', '$http', 
     function($scope, $http) { 
      $http.get('trips.json').success(function(data) { 

      $scope.trips = data; 

      $scope.addTrip = function() { 
       $scope.trips.push({ 
       'Startdate': $scope.newtrip, 
       DAYS: [] 
       }) 
       $scope.newtrip = '' 
      } 

      $scope.deleteTrip = function(index) { 
       $scope.trips.splice(index, 1); 
      } 

      $scope.delTripDay = function(trip, index) { 
       trip.DAYS.splice(index, 1); 
      } 


      $scope.savedJSON = ''; 

      $scope.save = function() { 
       $scope.savedJSON = angular.toJson($scope.trips); 
      }; 


      }); 


     } 
     ]); 


     app.controller("DayController", function() { 

     this.day = {}; 
     this.addDay = function(trip) { 
      trip.DAYS.push(this.day); 
      this.day = {}; 
     } 

     }); 

    })(); 
+1

Вы уверены, что вы посылаете правильный индекс в функции? Обратите внимание, что при использовании фильтров (например, orderby и filter by query) исходный массив (поездки) остается неизменным. Значение исходных индексов не изменяется. Вместо того, чтобы передавать индекс в функцию, попробуйте отправить сам объект. Другой вариант - применить фильтры в контроллере, а не в html. –

+0

вам нужно поместить фильтр в свой код при удалении. Потому что список, отображаемый в пользовательском интерфейсе, отфильтровывается, и список, из которого вы удаляете, не фильтруется –

ответ

1

Проблема заключается вы фильтрация массива на пользовательском интерфейсе с помощью углового фильтра и удаления массива из нефильтрованного массива было удаление объекта в разные дни.

Вам нужно изменить только функцию deleteTripDay, как показано ниже.

КОД

$scope.delTripDay = function(trip, index) { 
    //creating array structure like UI 
    var deleteDays = $filter('orderBy')($filter('filter')(trip.DAYS, $scope.query), 'DATE'); 
    deleteDays.splice(index, 1); // then delete by index 
    trip.DAYS = deleteDays; //reassigning update array to trip days 
} 

Working Plunkr

Надеется, что это может помочь вам, спасибо.

+0

спасибо за ваш подход! Но удаление не работает правильно! Если вы добавили несколько дней до и после, например, для поездки nr. 2 (15.02.2014) вы можете заметить, что он по-прежнему удаляет неправильные дни. –

+0

@ phil-k checkout обновленный ответ –

+0

большое спасибо pankajparkar! теперь он работает! Я добавил только следующий код: $ scope.trip.DAYS = $ filter ('orderBy') ($ filter ('filter') (trip.DAYS, $ scope.query), 'DATE'); что обновляет мой массив после удаления любого значения в правильный порядок сортировки. Еще раз спасибо за вашу помощь. –

Смежные вопросы