2016-04-18 2 views
0

Ich habe eine Liste von Daten, die eine ionische Liste mit Löschfunktion füllt, wenn wir die Liste nach links wischen.Wie verwende ich Arrays Splice-Methode in Ion-Liste

Ich bin in der Lage, die Löschfunktion zu arbeiten, aber ich bin fest, wie die Liste zu spleißen, wenn die Antwort wahr ist.

ich verwende $scope.data.splice($index, 1);

dies ist mein Code

HTML

<ion-item ng-repeat="x in data track by $index" href="#/item/{{x.mif_no}}" class="item-remove-animate"> 
    <ion-option-button class="button-assertive icon ion-trash-a" on-touch="Delete(x.mif_no,x.item_no)"></ion-option-button> 
</ion-item> 

und dies ist der js Code

JS

$scope.Delete = function(docno,itemno){ 
$http({ 
    method: "post", 
    url: apiServer + "/fg-in-del.php", 
    data: { 
    mifno: docno, 
    itemno: itemno, 
    Dbserver: window.localStorage.getItem("server"), 
    Dbuser: window.localStorage.getItem("username"), 
    Dbpass: window.localStorage.getItem("password"), 
    Dbname: window.localStorage.getItem("dbname"), 
    }, 
    headers: { 
    'Content-Type': 'application/x-www-form-urlencoded', 
    } 
}).then(function(response) { 
    $scope.data=response.data; 
    if (response.data == 1){ 
    var alertPopup = $ionicPopup.alert({ 
     title: 'Delete', 
     template: 'Data has been deleted.' 
    }); 
    $scope.data.splice($index, 1); 
    }else { 
    var alertPopup = $ionicPopup.alert({ 
     title: 'Delete', 
     template: 'Failed to delete data.' 
    }); 
    console.log(response.data); 
    } 
}, function(response) { 
    $scope.data=response.data; 
    var alertPopup = $ionicPopup.alert({ 
    title: 'Delete', 
    template: 'Failed to delete data.' 
    }); 
}); 
} 

Antwort

0

JS

$scope.Delete = function(docno,itemno,index){ 
     $http({ 
     method: "post", 
     url: apiServer + "/fg-in-del.php", 
     data: { 
      mifno: docno, 
      itemno: itemno, 
      Dbserver: window.localStorage.getItem("server"), 
      Dbuser: window.localStorage.getItem("username"), 
      Dbpass: window.localStorage.getItem("password"), 
      Dbname: window.localStorage.getItem("dbname"), 
     }, 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded', 
     } 
     }).then(function(response) { 
     if (response.data == 1){ 
      var alertPopup = $ionicPopup.alert({ 
      title: 'Delete', 
      template: 'Data has been deleted.' 
      }); 
      $scope.data.splice(index, 1); 
     }else { 
      var alertPopup = $ionicPopup.alert({ 
      title: 'Delete', 
      template: 'Failed to delete data.' 
      }); 
      console.log(response.data); 
     } 
     }, function(response) { 
     $scope.data=response.data; 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Delete', 
      template: 'Failed to delete data.' 
     }); 
     }); 
    } 

HTML

<ion-item ng-repeat="x in data track by $index" ng-hide="x.deleted" href="#/item/{{x.mif_no}}" class="item-remove-animate"> 
    <ion-option-button class="button-assertive icon ion-trash-a" on-touch="Delete(x.mif_no,x.item_no, $index); x.deleted = true;"></ion-option-button> 
</ion-item> 
+0

funktioniert es jetzt, aber warum auf dem Index, der geklaut und gelöscht, die Liste immer noch angezeigt und geklaut (natürlich mit neuen Daten in der Liste) statt wieder zu normalen Listenansicht? –

+0

Sie meinen, die Liste wird nicht aktualisiert, nachdem Sie ein Element gelöscht haben? – Akis

+0

Die Liste wird aktualisiert, aber die Schaltfläche "Löschen" aus der vorherigen gelöschten Liste wird weiterhin angezeigt (nicht ausgeblendet). Ich muss es manuell zurückwischen, um das Menü auszublenden. –

0

Dieser Code wird nie funktionieren, weil:

wenn Sie

$scope.data=response.data; 

gesetzt und dann prüfen

if (response.data == 1){ 

$scope.data1 innerhalb dieses, wenn Zustand sein.

Es ist nicht möglich, 1 zu spleißen? und daher

$scope.data.splice($index, 1); 

wird nicht funktionieren.

+0

die Antwort von der api-Server 1 sein wird, wenn sie erfolgreich sind, die Daten löschen, dafür will ich es aus der Liste zu entfernen, wenn die Antwort des Servers 1 ist, Sonst wird es nichts tun, wird einfach eine Warnung geben, die die Daten nicht löschen konnte. –

+0

Kumpel, jetzt verstehe ich, was du meinst, danke –