AppStore implémente trois API des données dojo : Read, Write et Identity. Lisez attentivement la documentation de référence suivante à propos de chacune de ces API :
Il s'agit d'une API abstraite à laquelle les implémentations de fournisseur de données doivent se conformer. Pour plus d'informations sur les API de données dojo, visitez le site http://www.dojotoolkit.org/node/98.
Résumé des fonctions | |
---|---|
Objet | getValue(Object item, String attribute, String defaultValue) Permet d'extraire la valeur de l'attribut spécifié au niveau de l'élément |
Array | getValues(Object item, String attribute) Permet d'extraire la valeur de l'attribut spécifié au niveau de l'élément |
Array | getAttributes(Object item) Renvoie un tableau comportant tous les attributs de cet élément |
Booléen | hasAttribute(Object item, String attribute) Renvoie true si *item* indiqué possède une valeur pour *attribute* indiqué |
Booléen | containsValue(Object item, String attribute, Object value) Renvoie true si *value* indiquée est l'une des valeurs renvoyées par la méthode getValues |
Booléen | isItem(Object something) Renvoie si *something* est un élément et s'il provient de cette instance de magasin |
Booléen | isItemLoaded(Object something) Renvoie si *something* est chargé dans la mémoire locale |
void | loadItem(Object keywordArgs) Cette méthode permet de charger un élément donné pour qu'un appel à store.isItemLoaded(item) renvoie true |
Objet | fetch(Object keywordArgs) Si vous spécifiez une requête et définissez un ensemble d'options (par exemple, une option de démarrage (start) ou le nombre (count) d'éléments à renvoyer), cette méthode exécute la requête et les résultats sont disponibles sous forme d'éléments de données |
Objet | getFeatures() Renvoie un objet contenant un mot clé simple et indiquant les fonctionnalités d'interface implémentées par le magasin de données |
void | close(Object request) Indique au magasin qu'il doit supprimer les informations associées à une demande particulière |
String (chaîne) | getLabel(Object item) Méthode permettant d'inspecter l'élément et de renvoyer un intitulé lisible par l'utilisateur qui décrit l'élément de façon générale ou correcte |
Array | getLabelAttributes(Object item) Méthode permettant d'inspecter l'élément et de renvoyer un tableau récapitulatif des attributs éventuels, utilisés pour générer l'intitulé de l'élément |
Détails des fonctions |
---|
L'élément x ne possédant pas de valeur pour un attribut y est identique à un élément
x qui ne possède pas l'attribut y. Il s'agit d'un oxymore pour cet attribut
qui doit être présent sans posséder de valeurs. Cette situation peut également signifier qu'un élément possède cet attribut mais ne possède aucune valeur d'attribut. Si store.hasAttribute(item, attribute)
renvoie false, alors store.getValue(item, attribute) renvoie undefined.
var darthVader = store.getValue(lukeSkywalker, "father");
Bien que la méthode getValues() fonctionne comme la méthode getValue(), elle renvoie toujours un tableau et non une seule valeur d'attribut. Le tableau peut être vide, contenir une seule valeur d'attribut ou en contenir plusieurs. Si aucune valeur n'est définie pour l'attribut de l'élément, getValues() renvoie un tableau vide : []. Si store.hasAttribute(item, attribute) renvoie false, store.getValues(item, attribute) renvoie alors [].
var friendsOfLuke = store.getValues(lukeSkywalker, "friends");
Renvoie un tableau qui contient l'ensemble des attributs de l'élément. Cette méthode renvoie toujours un tableau. Si l'élément ne possède aucun attribut, getAttributes() renvoie un tableau vide : [].
var array = store.getAttributes(kermit);
Renvoie true si *item* indiqué possède une valeur pour *attribute* indiqué
var trueOrFalse = store.hasAttribute(kermit, "color");
Renvoie true si *value* indiquée correspond à l'une des valeurs renvoyées par la méthode getValues.
var trueOrFalse = store.containsValue(kermit, "color", "green");
Renvoie true si *something* est un élément et s'il provient de cette instance de magasin. Renvoie false si *something* est une valeur littérale, un élément provenant d'une autre instance de magasin ou tout autre objet différent d'un élément.
var yes = store.isItem(store.newItem()); var no = store.isItem("green");
Renvoie false si isItem(something) est false. Renvoie false si isItem(something) est true et si l'élément n'est pas encore chargé dans une mémoire locale. Par exemple, une valeur false est renvoyée si l'élément n'a pas encore été lu à partir du serveur.
var yes = store.isItemLoaded(store.newItem()); var no = store.isItemLoaded("green");
Cette méthode permet de charger un élément donné pour qu'un appel à store.isItemLoaded(item) renvoie true. Si un appel à isItemLoaded() renvoie true avant que loadItem() ne soit même appelée, loadItem() ne fonctionne pas et n'invoque pas les gestionnaires de rappel. Avant d'appeler cette méthode, vérifiez que l'élément n'a pas déjà été chargé.
{ item: object, onItem: Function, onError: Function, scope: object }
Si vous spécifiez une requête et un ensemble d'options (par exemple, un démarrage (start) et le nombre (count) d'éléments à renvoyer), cette méthode exécute la requête et rend les résultats disponibles sous forme d'éléments de données. Le principe de base du format et des exigences des magasins de données repose sur le fait qu'ils fonctionnent généralement de manière asynchrone. Par conséquent, les fonctions de rappel sont utilisées pour renvoyer des éléments localisés par les paramètres d'extraction.
Un objet de demande est immédiatement renvoyé. La demande de base est constituée des arguments de mot clé, transmis à la fonction fetch et à une fonction supplémentaire associée, abort(). L'objet de demande renvoyé peut être utilisé pour annuler une extraction. Tous les éléments de données renvoyés sont transmis via les rappels définis dans les paramètres d'extraction et ne figurent pas sur l'objet de "demande".
Ce processus ne signifie pas que les magasins personnalisés ne permettent pas d'ajouter des méthodes et des propriétés à l'objet de demande renvoyé, seulement que l'API n'en a pas besoin. Pour plus d'informations sur l'API de demande, reportez-vous au fichier dojo.data.api.Request.
{ query: query-string ou query-object, queryOptions: object, onBegin: Function, onItem: Function, onComplete: Function, onError: Function, scope: object, start: int count: int sort: array }
{ ignoreCase: boolean, //Whether or not the query should match case sensitively or not. Default behavior is false. deep: boolean //Whether or not a fetch should do a deep search of items and all child //items instead of just root-level items in a datastore. Default is false. }
{ attribute: attribute || attribute-name-string, descending: true|false; // Optional. Default is false. }Si vous comparez des attributs et qu'aucune valeur n'est affectée à l'attribut d'un élément donné (undefined), ce dernier s'affiche en fin de liste selon la logique de tri par défaut, qui classe les éléments par ordre croissant. Dans le cas d'un tri décroissant, ces éléments se trouvent en début de liste.
Au moment du renvoi, l'objet de demande peut avoir d'autres propriétés, par exemple, request.store, qui est un pointeur vers l'objet du magasin de données dont fetch() est une méthode.
// Fetch all books identified by the query and call 'showBooks' when complete var request = store.fetch({query:"all books", onComplete: showBooks}); // Fetch all items in the story and call 'showEverything' when complete. var request = store.fetch(onComplete: showEverything); // Fetch only 10 books that match the query 'all books', starting at the fifth book found during the search. // This demonstrates how paging can be done for specific queries. var request = store.fetch({query:"all books", start: 4, count: 10, onComplete: showBooks}); // Fetch all items that match the query, calling 'callback' each time an item is located. var request = store.fetch({query:"foo/bar", onItem:callback}); // Fetch the first 100 books by author King, call showKing when up to 100 items have been located. var request = store.fetch({query:{author:"King"}, start: 0, count:100, onComplete: showKing}); // Locate the books written by Author King. Sort it on title and publisher, then return the first 100 items from the sorted items. var request = store.fetch({query:{author:"King"}, sort: [{ attribute: "title", descending: true}, {attribute: "publisher"}], ,start: 0, count:100, onComplete: 'showKing'}); // Fetch the first 100 books by authors starting with the name King, then call showKing when up to 100 items have been located. var request = store.fetch({query:{author:"King*"}, start: 0, count:100, onComplete: showKing}); // Fetch the first 100 books by authors ending with 'ing', but only have one character before it (King, Bing, Ling, Sing, etc.), then call showBooks when up to 100 items // have been located. var request = store.fetch({query:{author:"?ing"}, start: 0, count:100, onComplete: showBooks}); // Fetch the first 100 books by author King, where the name is displayed as King, king, KING, kInG, and so on, then call showKing when up to 100 items have been located. var request = store.fetch({query:{author:"King"}, queryOptions:(ignoreCase: true}, start: 0, count:100, onComplete: showKing}); // Paging: var store = new dojo.data.LargeRdbmsStore({url:"jdbc:odbc:foobar"}); var fetchArgs = { query: {type:"employees", name:"Hillary *"}, // string matching sort: [{attribute:"department", descending:true}], start: 0, count: 20, scope: displayer, onBegin: showThrobber, onItem: displayItem, onComplete: stopThrobber, onError: handleFetchError, }; store.fetch(fetchArgs); // ... // When the user presses the "Next Page" button... fetchArgs.start += 20; store.fetch(fetchArgs); // get the next 20 items
var request = store.fetch({onComplete: doSomething}); //... store.close(request);
Il s'agit d'une API abstraite à laquelle les implémentations de fournisseur de données doivent se conformer. Cette API spécifie les fonctions requises pour écrire dans un magasin de données.
Résumé des fonctions | |
---|---|
Objet | getFeatures() Voir dojo.data.api.Read.getFeatures |
Objet | newItem(Object keywordArgs) Renvoie un élément nouvellement créé |
Booléen | deleteItem(Object item) Permet de supprimer un élément à partir du magasin |
Booléen | setValue(Object item, String attribute, Object value) Permet de définir la valeur d'un attribut sur un élément, remplaçant la ou les valeurs précédentes |
Booléen | setValues(Object item, String attribute, Array values) Permet d'ajouter chaque valeur dans le tableau *values* en tant que valeur de l'attribut de l'élément indiqué, remplaçant la ou les valeurs précédentes |
Booléen | unsetAttribute(Object item, String attribute) Permet de supprimer toutes les valeurs de l'attribut d'un élément |
Booléen | save(keywordArgs) Permet de sauvegarder toutes les modifications apportées localement au serveur |
Booléen | revert() Permet d'annuler les modifications non sauvegardées |
Booléen | isDirty(item) La fonction isDirty() renvoie true, pour un élément donné, si l'élément a été modifié depuis la dernière réalisation d'une méthode de sauvegarde |
Détails des fonctions |
---|
var kermit = store.newItem({name: "Kermit", color:[blue, green]});
var success = store.deleteItem(kermit);
var success = store.set(kermit, "color", "green");
var success = store.setValues(kermit, "color", ["green", "aqua"]); success = store.setValues(kermit, "color", []); if (success) {assert(!store.hasAttribute(kermit, "color"));}
var success = store.unsetAttribute(kermit, "color"); if (success) {assert(!store.hasAttribute(kermit, "color"));}
{ onComplete: function onError: function scope: object }
store.save({onComplete: onSave}); store.save({scope: fooObj, onComplete: onSave, onError: saveFailed});
var success = store.revert();
var trueOrFalse = store.isDirty(kermit); // true if kermit is dirty var trueOrFalse = store.isDirty(); // true if any item is dirty
Il s'agit d'une API abstraite à laquelle les implémentations de fournisseur de données doivent se conformer. Les fonctions définies extraient l'identité d'un individu pour un élément ainsi que les attributs ayant fourni l'identité.
Résumé des fonctions | |
---|---|
Objet | getFeatures() Voir dojo.data.api.Read.getFeatures |
Objet | getIdentity(Object item) Renvoie un identificateur unique pour un élément |
Array | getIdentityAttributes(Object item) Renvoie un tableau de noms d'attribut utilisés pour générer l'identité |
Objet | fetchItemByIdentity(Object keywordArgs) L'identité d'un élément étant fournie, cette méthode renvoie l'élément disposant de cette identité via le rappel onItem |
Détails des fonctions |
---|
var itemId = store.getIdentity(kermit); assert(kermit === store.findByIdentity(store.getIdentity(kermit)));
var itemId = store.getIdentity(kermit); var identifiers = store.getIdentityAttributes(itemId); assert(typeof identifiers === "array" || identifiers === null);
{ identity: string|object, onItem: Function, onError: Function, scope: object }