Question

J'ai décidé d'essayer Dojo au lieu d'utiliser JQuery pour une fois et j'ai du mal à manipuler un magasin de données.J'ai un DataChart lié au contenu d'un ItemFileWriteStore que j'ai rempli à la main à partir d'un message JSON de socket Web :

fakeData = {
        "identifier": "name",   
        "label": "Some data i'd like to add to later",
        "items": [
            {
                "name": "appendToMe",
                "values": [0.0, 1.0, 2.0, 3.0, 2.0, 1.0, 0.0]
            }
        ]
    };

store = new dojo.data.ItemFileWriteStore({
        data: fakeData
    });

var chart = new dojox.charting.DataChart("chartDiv", {});
chart.setStore(store, {"name":"*"}, "values");  

À ce stade, le graphique affiche la série "appendToMe" que j'ai créée.Ensuite, je reçois un autre message contenant une nouvelle valeur numérique pour la liste de valeurs "appendToMe".Comment puis-je l'ajouter au magasin, et cela suffira-t-il à déclencher la mise à jour du graphique ?

J'ai regardé le [](write API) 'store.setValue', mais il semble que je ne puisse l'utiliser que pour remplacer l'ensemble des valeurs en une seule unité.De plus, je n'ai pas de handle « élément » à utiliser avec l'appel, qui semble être disponible uniquement si vous utilisez le newItem API au lieu de construire le magasin avec JSON.

Acclamations!

Scott

Était-ce utile?

La solution

Vous devez d’abord récupérer l’élément appendToMe.

store.fetchItemByIdentity({identity : 'appendToMe', 
                                      onItem : function (item) {
   var itemValues = store.getValues(item, 'values');
   itemValues.push(someNewValue);
   store.setValues(item, 'values', itemValues);
}});

Ensuite, dans onItem, récupérez vos valeurs, modifiez-les, puis redéfinissez-les à l'aide de store.setValue()

Comme indiqué, getValues ​​doit être utilisé pour renvoyer le tableau de valeurs au lieu de l'habituel getValue, qui ne renvoie jamais de tableau.Et similaire avec setValues.

http://dojotoolkit.org/api/1.6/dojo/data/api/Read

Cette méthode getValues ​​() fonctionne comme la méthode getValue (), mais getValues ​​() renvoie toujours un tableau plutôt qu'une seule valeur d'attribut.Le tableau peut être vide, peut contenir une seule valeur d'attribut ou peut contenir de nombreuses valeurs d'attribut.Si l'élément n'a pas de valeur pour l'attribut donné, GetValues ​​() renvoie un tableau vide:[].(Donc, si Store.Hasattribute (Item, Attribut) a un retour de false, alors store.getValues ​​(item, attribut) renvoie [].)

setValues()http://dojotoolkit.org/api/1.6/dojo/data/api/Write

Ajoute chaque valeur dans le valeurs tableau comme valeur de l'attribut donné sur l'élément donné.Remplace toute valeur ou valeur antérieure.Appeler store.setValues ​​(x, y, []) (avec valeurs En tant que tableau vide) a le même effet que l'appel Store.unSetAttribute (x, y).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top