2017-09-27 3 views
1

Ich habe eine Ansicht mit 2 Gittern. Die Gitter werden von 2 Modellen unterstützt. Die Beziehung zwischen den beiden Modellen ist eins zu viele (keyless association).Extjs6 Update löscht nicht schmutziges Flag

Modelle:

Ext.define('TestApp.model.association.Project', { 
    extend: Ext.data.Model, 
    fields: [ 
     { 
      type: 'int', 
      name: 'id' 
     }, { 
      type: 'string', 
      name: 'project' 
     }, { 
      type: 'number', 
      name: 'allocation' 
     }, { 
      type: 'string', 
      name: 'comments' 
     }, { 
      type:'string', 
      name:'state' 
     } 
    ] 
}); 


Ext.define('TestApp.model.association.User', { 
    extend: Ext.data.Model, 
    fields: [{ 
     type: 'int', 
     name: 'id' 
    }, { 
     type: 'string', 
     name: 'employee' 
    }, { 
     type: 'string', 
     name: 'location' 
    }, { 
     type: 'string', 
     name: 'department' 
    }, { 
     type: 'string', 
     name: 'manager' 
    }, { 
     type: 'number', 
     name: 'allocation' 
    }], 
    hasMany: [{ 
     model: 'TestApp.model.association.Project', 
     // Note: use of 'role' is preferred over 'name' 
     role: 'projects', 
     // Define role for inverse association 
     inverse: { 
      role: 'user' 
     } 
    }] 
}); 

Nachdem ich eine Zeile von dem Kind Teil bearbeiten, habe ich den übergeordneten Datensatz als schmutzig (dirty = true) und dann synchronisieren ich den Laden. Nachdem ich die notwendigen Arbeiten am Server durchgeführt habe, sende ich die Antwort zurück. Nachdem ich die Antwort erhalten habe, bleibt die schmutzige Flagge auf dem Kindteil wahr.

Wenn keine Zuordnung vorhanden ist, wird nach dem Empfang der Antwort vom Server die Markierung "dreckig" automatisch gelöscht.

Ich habe eine fiddle für weitere Details erstellt.

Wie lösche ich die schmutzige Flagge von einer Verbindung nach einem Update?

bearbeiten

Ich habe die Geige aktualisiert besser mein Problem zu zeigen. Schritte zum Reproduzieren:

  • Wählen John Doe Datensatz aus der oberen Platte
  • Wählen Sie Apple von der Bodenplatte
  • bearbeiten Zuordnung und Kommentare Spalte (Zeile bearbeiten Plugin verfügbar). Drücken Sie Ok
  • Drücken Sie die Schaltfläche Speichern in der Symbolleiste des zweiten Gitters

Die Anfrage wird an den Server gesendet. Der Server antwortet mit einem json (die Serverantwort ist fest codiert und wird immer dieselbe sein).

Der Client kann den in der Antwort empfangenen untergeordneten Datensatz nicht festlegen und das schmutzige Flag deaktivieren.

Warum macht das? Ist das ein Fehler?

+0

Sie für die Einstellung Dirty-Flag auf Server abhängig sind, oder können Sie Code für es für schmutzige Flagge für Eltern-> Kind einstellen. – Tejas

+0

@ Tejas1991 Ich habe deine Aussage nicht ganz verstanden. Ich sende einen JSON an den Server mit den Änderungen. Der Server antwortet mit einem JSON, der den Datensatz enthält, nachdem er in der Datenbank gespeichert wurde. Es ist eine Ruheanwendung. Der schmutzige Zustand wird auf dem Client festgelegt, nachdem ich einige Änderungen vorgenommen habe – florin

+0

Warum programmierst du nicht programmatisch das Feld 'dirty' des Feldes, anstatt die Daten des Servers darauf zu setzen? Eine Sache können Sie mir über Ihren Code sagen, wo Sie Server-Daten einstellen – Tejas

Antwort

0

Beim Einrichten von Zuordnungen müssen alle zugeordneten Modelle zum selben Schema gehören. In Bezug darauf habe ich einige Änderungen an Ihrem Code vorgenommen. Bitte überprüfen Sie, ob die Schaltfläche Speichern jetzt funktioniert. Ich habe auch einige Teile Ihres Codes für den ersten Test auskommentiert.

den Code finden here

+0

Ich habe Ihren Vorschlag durch Hinzufügen eines Basismodells mit einem Schema versucht. Es hat nicht funktioniert. Ich brauche den kommentierten Code, weil er meine Anfrage-Payload so hält, wie ich sie brauche. – florin