2016-03-30 7 views
1

Ich muss Base64-Codierung auf eine der Grid-Spalte anwenden, bevor Sie es an Back-End und dann muss ich es auch dekodieren.Extjs 4.2: Wie base64 Encoding und Decoding auf eine bestimmte Rasterspalte anwenden

ich so etwas wie dies versucht:

In meinem Speicher vor sync:

beforesync: function(options, eOpts){ 
    // Encode string 
    options.create[0].data.ColumnText = btoa(options.create[0].data.ColumnText); 
} 

In meinem Modell des Änderungsverfahrens, ich habe dies:

{ 
    name: 'ColumnText', 
    type: 'string', 
    convert: function (value, records) { 

     // Decoding Encoded Information 
     return atob(value); 
    } 
} 

Problem tritt auf, wenn ich versuche, Um einen neuen Datensatz mit dem Zeileneditor-Plugin hinzuzufügen, sobald ich einen neuen Datensatz erstellt habe und versuche, ihn zu senden, werden die neuen Datensatzdaten vom Modell validiert und wenn diese Zeile erreicht wird:

return atob(value); 

Es wirft einen Fehler dieser Wert nicht richtig codiert ist, was richtig ist, da es eine neu erstellte Objekt ist, und ich bin kodiert Daten in vor Synchronisierungsmethode meines Speichers.

Kann mir jemand sagen Wie kann ich dieses Problem lösen?

Antwort

2

Einer der Lösung für diese, die ich einmal verwendet wurde, war die Verwendung des Rekord Objekts zu machen, die Sie in der convert Methode des Modells erhalten.

Sie können nach typeof "record.raw" suchen. Für die gespeicherten/abgeholten Datensätze ist dies eine Zeichenfolge, die die gesamte XML-Datenzeichenfolge enthält. Bei neu erstellten Datensätzen, die Sie über den Zeileneditor erstellen, ist typeof "record.raw" ein Objekt (Ihr Datenmodellobjekt). So etwas wie das:

+0

Vielen Dank für Ihre Erklärung. Genau das habe ich gesucht. – User999922

Verwandte Themen