ModelStorageDelegate
- ModelStorageDelegate
Une instance de ModelStorageDelegate permet à une instance de Model de lire et d'écrire ses données en JSON dans l'espace de stockage du navigateur. En tant que délégué, toutes les méthodes d'une instance de ModelStorageDelegate sont toujours appelées à travers une instance de Model.
- function ModelStorageDelegate(mode = 'session') {
- if (! (mode == 'session' || mode == 'local'))
- throw new TypeError();
- this._storage = mode == 'local' ? localStorage : sessionStorage;
- }
- ModelStorageDelegate.prototype = Object.create(Objective.prototype);
- Object.defineProperty(ModelStorageDelegate.prototype, 'constructor', { value: ModelStorageDelegate, enumerable: false, writable: true });
Une instance de ModelStorageDelegate hérite de la classe Objective.
mode
indique si les données sont stockées dans une session séparée ou localement et d'une façon permanente par le navigateur, i.d. 'session'
ou 'local'
. Le mode 'session'
est pris par défaut.
Voir l'article Web Storage API sur le site MDN Web Docs.
- ModelStorageDelegate.prototype.isSaved = function(model) {
- return this._storage.getItem(model.name) !== null;
- };
isSaved
retourne true
si l'espace de stockage de this
a un item nommé d'après le nom de model
, sinon false
.
- ModelStorageDelegate.prototype.readIn = function(model) {
- let json = this._storage.getItem(model.name);
- if (json !== null)
- model.set(JSON.parse(json));
- };
readIn
récupère le contenu en JSON de l'item de l'espace de stockage de this
nommé d'après le nom de model
et si défini, le décode et l'assigne à model
.
- ModelStorageDelegate.prototype.writeOut = function(model) {
- this._storage.setItem(model.name, JSON.stringify(model.get()));
- model.changed = false;
- };
writeOut
assigne la valeur en JSON de model
à un item de l'espace de stockage de this
nommé d'après le nom de model
.
- ModelStorageDelegate.prototype.clearSave = function(model) {
- this._storage.removeItem(model.name);
- };
clearSave
détruit l'item de l'espace de stockage de this
nommé d'après le nom de model
.
Commentaires