2017-02-13 5 views
-1

Ich habe eine Liste, die Objekte mit Sortierreihenfolge und Ländercode Eigenschaft enthält. Sie können die Sortierreihenfolge ändern. Wenn Sie nun die Sortierreihenfolge ändern, müssen Sie die Elemente gemäß den neuen Sortierreihenfolgen erneut sortieren. Zum Beispiel:Angular Js - Umsortieren Listenelemente

Country Code | Sort Order 
AUS   1 
IND   2 
USA   3 
UK    4 
RUS   5 

Jetzt ändert Art von Großbritannien als 2 sollte geben Ergebnisse als:

Country Code | Sort Order 
AUS   1 
UK    2 
IND   3 
USA   4 
RUS   5 

ich eine Lösung brauchen, wo die Datenbankänderungen minimal sein sollte. Da diese Liste an C# Web Api-Controller über Winkel-Controller gesendet werden würde, um zu speichern.

+1

Bitte fügen Sie mehr Kontext zu Ihrer Frage hinzu. Erstellen Sie die erwarteten Datenbankänderungen, die Sie minimieren möchten. – DevCod

+0

Ok, lass mich das erklären. Ich habe nur einen Wert geändert, dh. änderte UKs Sortierreihenfolge von 4 auf 2 und alle anderen Sortierreihenfolgen wurden bis zu USA erhöht, aber RUS 'blieb gleich, daher wurde 4 zu 2 und Sortierreihenfolge 2 und 3 wurden zu 3 bzw. 4. Wenn ich scope.changes in angular trackle, dann werde ich drei Änderungen ie.UK, IND und USA bekommen. Gibt es irgendwelche Arbeit oder minimale Annäherung, wo ich gerade nur Großbritanniens Aufzeichnung aktualisieren muss. –

Antwort

0

Da kein Code zur Verfügung gestellt wird, habe ich den UI-Code und den Arbeitsablauf angenommen, den Sie versuchen zu arbeiten. Sie können den folgenden Code verwenden, um Änderungen am Modell selektiv zu verfolgen.

HTML: 
<html> 
     <input ng-change="change(ele, '{{ele.sortOrder}}')" type="number" ng-model="ele.sortOrder"></input> 
</html> 

JavaScript: 
$scope.change = function(NewObject, OldSortOrder) { 
$scope.NewObject = NewObject; 
$scope.NewSortOrder = NewObject.sortOrder; 
$scope.OldSortOrder = OldSortOrder; 

//Make a call to the C# web Api now with the changes you want to update in the backend. 
//$http.post('api/..'); 

} 

Der vollständige Code wird bei https://plnkr.co/edit/LdhpZr?p=preview

gehalten

Eine weitere Abfrage wie dies bei ng-change get new value and original value finden.