AppStore implementa tres de las API de dojo.data: Read, Write e Identity. Consulte la siguiente documentación de referencia sobre cada una de estas API:
Es una API abstracta que siguen las implementaciones del proveedor de datos. Para obtener más información sobre las API dojo.data, visite http://www.dojotoolkit.org/node/98.
Resumen de funciones | |
---|---|
Objeto | getValue(Object item, String attribute, String defaultValue) Recupera el valor del atributo citado en el elemento dado |
Matriz | getValues(Object item, String attribute) Recupera los valores del atributo citado en el elemento dado |
Matriz | getAttributes(Object item) Devuelve una matriz con todos los atributos de este elemento |
Booleano | hasAttribute(Object item, String attribute) Devuelve true si el *item* dado tiene un valor para el *attribute* dado |
Booleano | containsValue(Object item, String attribute, Object value) Devuelve true si el *value* dado es uno de los valores que devuelve el método getValues |
Booleano | isItem(Object something) Devuelve si *something* es un elemento y proviene de esta instancia de almacén |
Booleano | isItemLoaded(Object something) Devuelve si *something* está cargado en la memoria local |
void | loadItem(Object keywordArgs) Dado un elemento, este método carga el elemento para que la siguiente llamadas a store.isItemLoaded(item) devuelva true |
Objeto | fetch(Object keywordArgs) Dada una consulta y un conjunto de opciones definidas como, por ejemplo, un inicio y un recuento de los elementos que se devuelven, este método ejecuta la consulta y hace que los resultados estén disponibles como elementos de datos |
Objeto | getFeatures() Devuelve un simple objeto de valores de palabra clave que especifica qué características de interfaz implementa el almacén de datos |
void | close(Object request) Indica al almacén que cierre toda información asociada con una determinada petición |
Serie | getLabel(Object item) Método para inspeccionar el elemento y devolver una etiqueta legible por el usuario para el elemento que proporciona una descripción general o adecuada del elemento |
Matriz | getLabelAttributes(Object item) Método para inspeccionar el elemento y devolver una matriz de los atributos del elemento que se han utilizado para generar la etiqueta, si existe alguno |
Detalles de las funciones |
---|
Un elemento x que no tiene un valor para un atributo y es lo mismo que un
elemento x que no tiene un atributo y. Es un oxímoron que dicho atributo esté presente
sin tener valores o que un elemento tenga un atributo, pero no tenga valores de atributo. Si store.hasAttribute(item, attribute) devuelve false, store.getValue(item, attribute)
devuelve undefined.
var darthVader = store.getValue(lukeSkywalker, "father");
Este método getValues() funciona como el método getValue(), pero getValues() siempre devuelve una matriz en lugar de un valor de atributo individual. La matriz puede estar vacía, contener un valor de atributo individual o contener varios valores de atributo. Si el elemento no tiene un valor para el atributo dado, getValues() devuelve una matriz vacía: []. Si store.hasAttribute(item, attribute) devuelve false, store.getValues(item, attribute) devuelve [].
var friendsOfLuke = store.getValues(lukeSkywalker, "friends");
Devuelve una matriz con todos los atributos que tiene este elemento. Este método siempre devuelve una matriz. Si el elemento no tiene ningún atributo, getAttributes() devuelve una matriz vacía: [].
var array = store.getAttributes(kermit);
Devuelve true si el *item* dado tiene un valor para el *attribute* dado
var trueOrFalse = store.hasAttribute(kermit, "color");
Devuelve true si el *value* dado es uno de los valores que devuelve el método getValues.
var trueOrFalse = store.containsValue(kermit, "color", "green");
Devuelve true si *something* es un elemento y proviene de la instancia de almacén. Devuelve false si *something* es un valor literal, un elemento de otra instancia o un objeto distinto de un elemento.
var yes = store.isItem(store.newItem()); var no = store.isItem("green");
Devuelve false si isItem(something) es false. Devuelve false si isItem(something) es true, pero el elemento no se ha cargado todavía en la memoria local. Por ejemplo, se devuelve un valor false si el elemento no se ha leído del servidor.
var yes = store.isItemLoaded(store.newItem()); var no = store.isItemLoaded("green");
Dado un elemento, este método carga el elemento para que la siguiente llamada a store.isItemLoaded(item) devuelva true. Si una llamada a isItemLoaded() devuelve true antes de llamar a loadItem(), loadItem() no funciona y no invoca los manejadores de retorno de llamada. Antes de invocar este método, compruebe que no se haya cargado todavía el elemento.
{ item: object, onItem: Function, onError: Function, scope: object }
Dada una consulta y un conjunto de opciones definidas como, por ejemplo, un inicio y un recuento de los elementos que se devuelven, este método ejecuta la consulta y hace que los resultados estén disponibles como elementos de datos. El formato de las API de dojo.data espera que los almacenes de datos funcionen generalmente de forma asíncrona; por lo tanto, se utilizan retornos de llamada para devolver los elementos localizados por los parámetros de la recogida.
Se devuelve inmediatamente un objeto de petición. La petición básica consiste en la palabra clave arguments que se pasa a fetch y una función adicional adjunta, abort(). El objeto de petición devuelto puede utilizarse para cancelar una recogida. Todos los retornos de elementos de datos pasan por los retornos de llamada definidos en los parámetros de recogida y no están presentes en el objeto 'request'.
Este proceso no significa que los almacenes personalizados no puedan añadir métodos y propiedades al objeto de petición devuelto, sólo que la API no lo necesita. Para obtener más información sobre la API de petición, consulte dojo.data.api.Request.
{ query: query-string o query-object, queryOptions: object, onBegin: Function, onItem: Function, onComplete: Function, onError: Function, scope: object, start: int count: int sort: array }
{ ignoreCase: boolean, //Determina si deben coincidir las mayúsculas y minúsculas en la consulta. El comportamiento por omisión es false. deep: boolean //Determina si una recogida debe realizar una búsqueda profunda de elementos y todos los elementos hijo //en lugar de sólo los elementos de nivel raíz en el almacén de datos. El valor por omisión es false. }
{ attribute: attribute || attribute-name-string, descending: true|false; // Opcional. El valor por omisión es false. }Cuando se comparan atributos, si un elemento no contiene ningún valor para el atributo (indefinido), la lógica de orden ascendente por omisión lo baja al final de la lista. En el caso del orden descendente, estos elementos se colocan en la parte superior de la lista.
El objeto de petición también puede tener propiedades adicionales cuando se devuelve, por ejemplo, la propiedad request.store, que es un puntero al objeto de almacén de datos donde fetch() es un método.
// Captar todos los libros identificados por la consulta e invocar 'showBooks' cuando finalice var request = store.fetch({query:"all books", onComplete: showBooks}); // Captar todos los elementos del almacén e invocar 'showEverything' cuando finalice. var request = store.fetch(onComplete: showEverything); // Captar sólo 10 libros que coincidan con la consulta 'all books', empezando por el quinto libro encontrado durante la búsqueda. // Esto demuestra cómo se puede realizar la transferencia de páginas para consultas específicas. var request = store.fetch({query:"all books", start: 4, count: 10, onComplete: showBooks}); // Captar todos los elementos que coincidan con la consulta e invocar 'callback' cada vez que se encuentre un elemento. var request = store.fetch({query:"foo/bar", onItem:callback}); // Captar los primeros 100 libros del autor King e invocar showKing cuando se hayan localizado 100 elementos. var request = store.fetch({query:{author:"King"}, start: 0, count:100, onComplete: showKing}); // Localizar los libros escritos por el autor King. Ordenarlos por título y editor y, a continuación, devolver los 100 primeros elementos de los elementos ordenados. var request = store.fetch({query:{author:"King"}, sort: [{ attribute: "title", descending: true}, {attribute: "publisher"}], ,start: 0, count:100, onComplete: 'showKing'}); // Captar los primeros 100 libros de autores que empiecen por el nombre King y, a continuación, invocar showKing cuando se hayan localizado 100 elementos. var request = store.fetch({query:{author:"King*"}, start: 0, count:100, onComplete: showKing}); // Captar los primeros 100 libros de autores que terminen en 'ing', pero que sólo tengan un carácter delante (King, Bing, Ling, Sing, etc.) y, a continuación, invocar showBooks cuando se hayan localizado // 100 elementos. var request = store.fetch({query:{author:"?ing"}, start: 0, count:100, onComplete: showBooks}); // Captar los primeros 100 libros del autor King, donde el nombre aparezca como King, king, KING, kInG, etc. y, a continuación, invocar showKing cuando se hayan localizado 100 elementos. var request = store.fetch({query:{author:"King"}, queryOptions:(ignoreCase: true}, start: 0, count:100, onComplete: showKing}); // Transferencia de páginas: var store = new dojo.data.LargeRdbmsStore({url:"jdbc:odbc:foobar"}); var fetchArgs = { query: {type:"employees", name:"Hillary *"}, // coincidencia de serie sort: [{attribute:"department", descending:true}], start: 0, count: 20, scope: displayer, onBegin: showThrobber, onItem: displayItem, onComplete: stopThrobber, onError: handleFetchError, }; store.fetch(fetchArgs); // ... // Cuando el usuario pulsa el botón "Página siguiente"... fetchArgs.start += 20; store.fetch(fetchArgs); // obtener los siguientes 20 elementos
var request = store.fetch({onComplete: doSomething}); //... store.close(request);
Es una API abstracta que siguen las implementaciones del proveedor de datos. Esta API especifica las funciones necesarias para escribir en un almacén de datos.
Resumen de funciones | |
---|---|
Objeto | getFeatures() Consulte dojo.data.api.Read.getFeatures |
Objeto | newItem(Object keywordArgs) Devuelve un elemento que se acaba de crear |
Booleano | deleteItem(Object item) Suprime un elemento del almacén |
Booleano | setValue(Object item, String attribute, Object value) Establece el valor de un atributo en un elemento, sustituyendo el valor o los valores anteriores |
Booleano | setValues(Object item, String attribute, Array values) Añada cada valor en la matriz de *values* como un valor del atributo dado en el elemento dado, sustituyendo el valor o los valores anteriores |
Booleano | unsetAttribute(Object item, String attribute) Suprime todos los valores de un atributo en un elemento |
Booleano | save(keywordArgs) Guarda todos los cambios que se han realizado localmente en el servidor |
Booleano | revert() Descarta los cambios no guardados |
Booleano | isDirty(item) Dado un elemento, isDirty() devuelve true si el elemento se ha modificado desde la última finalización del método save |
Detalles de las funciones |
---|
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 si kermit es dirty var trueOrFalse = store.isDirty(); // true si cualquier elemento es dirty
Es una API abstracta que siguen las implementaciones del proveedor de datos. Las funciones definidas recuperan la identidad individual de un elemento, así como los atributos que proporciona la identidad.
Resumen de funciones | |
---|---|
Objeto | getFeatures() Consulte dojo.data.api.Read.getFeatures |
Objeto | getIdentity(Object item) Devuelve un identificador exclusivo para un elemento |
Matriz | getIdentityAttributes(Object item) Devuelve una matriz de nombres de atributo que se utilizan para generar la identidad |
Objeto | fetchItemByIdentity(Object keywordArgs) Dada la identidad de un elemento, este método devuelve el elemento que tiene dicha identidad mediante el retorno de llamada onItem |
Detalles de las funciones |
---|
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 }