2016-04-19 5 views
0

Ich arbeite an meiner ersten eckigen App und ich kenne nicht den besten Weg, um dieses Problem zu behandeln.AngularJS Bearbeiten und Speichern von Werten in ng-repeat

ich eine lange hierarchische json haben becouse die Tabellen der Datenbank wie eine Pyramide sind aussieht, das ähnlich wie: enter image description here

Ich habe die Ansicht ziemlich gut vertreten ng-repeat mit, ich möchte in der Lage sein editiere die letzten Zeilen der letzten Tabelle, die der letzten JSON-Ebene entsprechen.

Dazu habe ich ein Bearbeitungsmodal implementiert, das gut funktioniert, es speichert und aktualisiert die Datenbank perfekt, das Problem ist, dass ich den aktualisierten Wert zu aktualisieren muss die Seite Bildposition und kollabierenden Akkordeons aktualisieren, was sehr schlecht ist .

Bilder von Akkordeons:

enter image description here

Wenn ich Bearbeiten-Symbol ein Versprechen speichert in $ scope.objEdit Anklicken = {}; das Objekt und startet das Modal, das durch ng-model mit diesem Objekt verknüpft ist.

Also ich denke, dass der nächste Schritt ist, wenn Modal geschlossen ist, muss ich das alte Objekt in der $ Scope-Variable, die den gesamten JSON für die bearbeitete enthält enthält überschreiben, aber ich bin nicht sicher, wie es geht.

Ich würde Ihre Hilfe schätzen, um die Standardmethode zu lernen, thx mates.

Ich habe es gerade gelöst, ich benutzte ein ähnliches Verfahren wie das @AnikIslamAbhi, in der Geige, die @Harshad in den Kommentaren geteilt wurde gelöst, aber ich habe eine viel schwierigere json zu handhaben, musste ich gehen mit den Dingen, wie sie den Index aller Ebenen des json zu bekommen:

 
$scope.positionEvaluacion = $scope.dataEvaluacion.indexOf(args.levelOne); 
$scope.positionAsignaturaevaluacion = $scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion.indexOf(args.levelTwo); 
$scope.positionTarea = $scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion[$scope.positionAsignaturaevaluacion].tarea.indexOf(args.levelThree); 

Und diese Aufgabe nach dieser Überschreibung mit der bearbeiteten ein:

 
$scope.dataEvaluacion[$scope.positionEvaluacion].asignaturaevaluacion[$scope.positionAsignaturaevaluacion].tarea[$scope.positionTarea] = $scope.objEdit; 
+0

können Sie zeigen, verwenden mehr Code? Wie legen Sie die neuen Daten fest? – kabaehr

+0

Haben Sie etwas versucht? So können wir leicht helfen –

+1

besuchen Sie dieses http://jsfiddle.net/Thw8n/4/ –

Antwort

1

können Sie diesen Vorgang versuchen

  1. Übergeben Sie das ausgewählte Objekt beim Bearbeiten Klicken Sie auf der Benutzeroberfläche auf Controller.
  2. Klonen Sie es und übergeben Sie das Objekt an Modal.
  3. OnModal schließen Sie das modale Objekt zurück an die Benutzeroberfläche.
  4. Kopieren Sie die Werte von modalen Objekt zum vorherigen ausgewählte Objekt

Gefällt Ihnen dieses

for(var i in modalObj){ 
    selectedObj[i]=modalObj[i]; 
} 
+0

Wenn ich auf Bearbeiten-Symbol klicke, verspricht ein Stores in $ scope.objEdit = {}; das Objekt und startet das Modal, das durch ng-model mit diesem Objekt verknüpft ist. Also ich denke, dass der nächste Schritt ist, dass, wenn Modal geschlossen ist, ich das alte Objekt für dieses in der Variable $ scope überschreiben muss, die den gesamten JSON enthält, aber ich bin nicht sicher, wie es geht. –

+0

@ RubénMartín können Sie eine Demo in jsfiddle bereitstellen? –

+0

Ich habe es gerade gelöst, thx an Sie @ AnikIslamAbhi und diesen Link http://jsfiddle.net/Thw8n/4/, die @Harshad thx für Ihre Antwort geteilt –