Persistence¶
Registry¶
Das Registry-Objekt ist eine Speziaisierung von Map für die Verwaltung von Daten. Eine zentrale Instanz der Registry ist im Namepsace unter Alvine.Registry eingehängt. Mit den von Map gewohnten Operationen kann auf die Registry zugegriffen werden.
Alvine.Registry.get(...)
Daten können auch direkt von einer URI initialisiert werden. Dazu muss die Methode
Alvine.Registry.initFromURL
aufgerufen werden.
Alvine.Registry.initFromURL('mydatayet','https://example.com/');
Das Ergebnis der Methode wird über den Event loaddataset.DONE
(mit den Argumenten: key
, data
) im Erfolgsfall und
loaddataset.FAIL
(mit den Argumenten: key
, jqXHR
, textStatus
, errorThrown
) im Fehlerfall angezeigt.
Zum Speichern der Daten, muss die Funktion Alvine.Registry.postToURL
aufgerufen werden.
Die Daten des Schlüssels werden per POST gesendet.
Alvine.Registry.postToURL('mydatayet','https://example.com/');
Das Ergebnis der Methode wird über den Event senddataset.DONE
(mit den Argumenten: key
, data
) im Erfolgsfall und
senddataset.FAIL
(mit den Argumenten: key
, jqXHR
, textStatus
, errorThrown
) im Fehlerfall angezeigt.
Dieser Prozess lässt sich über die Registrierung einer Daten-URL automatisieren. Dazu muss die Methode Alvine.Registry.register
aufgerufen werden. Die angegebene URL muss ein JSON zurückgeben. Ist der Schlüssel bereits mit einer URL registriert, so
wird eine Exception geworfen. Nach erfolgreichem Laden wird der Event registerdataset.DONE
mit dem Schlüssel key
als Parameter
gesendet. Im Fehlerfall wird der Event registerdataset.FAIL
mit den Parametern key
, jqXHR
,
textStatus
und errorThrown
geworfen.
Alvine.Registry.register('mydata','http://example.com/')
Um Datensätze anlegen zu können, kann ein dritter Parameter übergeben werden. Wird ein dritter Parameter übergeben, so werden die enthaltenen Daten als Dataset registriert und keine Daten vom Server geladen. Allerdings werden bei Änderungen die Daten an die URL übertragen.
Alvine.Registry.register('mydata','http://example.com/', {'a':1})
Wurde über Alvine.Registry.register
ein Schlüssel mit einer URL registriert,
so kann dieser Schlüssel über die Methode Alvine.Registry.initFromURL
neu geladen werden. Hier ist dann
der zweite Parameter optional.
Alvine.Registry.initFromURL('mydata');
Um eine URL abzumelden, muss Alvine.Registry.unregister
aufgerufen werden. Ist der Schlüssel mit keiner UL registriert, so
wird eine Exception geworfen.
Alvine.Registry.unregister('mydata')
Nach der Registrierung werden die Daten von der URL geladen un im Dateset eingetragen. Änderungen auf der obersten Ebene des Datesets führen zum absenden der Daten an die Registrierte URL per POST. Um Änderungen auf unterer Ebene abzuschicken, muss ein Schlüssel auf oberster Ebene geändert werden. Mann kann dazu auch einen Fakewert verwenden.
Alvine.Registry.get('mydata').set('done',1);