1

一度 JQuery を使用する代わりに Dojo を試してみることにしましたが、データ・ストアの操作に問題があります。Web ソケット JSON メッセージから手動で入力した ItemFileWriteStore の内容にバインドされた DataChart があります。

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");  

この時点で、グラフには作成した「appendToMe」シリーズが表示されています。次に、「appendToMe」値リストの新しい数値を含む別のメッセージを受け取ります。どうすればそれをストアに追加できますか?これでグラフの更新をトリガーするのに十分でしょうか?

[](書き込み API) 'store.setValue' を見てきましたが、これを使用して、値のチャンク全体を 1 つの単位として置き換えることしかできないようです。さらに、呼び出しで使用する「アイテム」ハンドルがありません。これは、newItemJSON でストアを構築する代わりに API を使用する場合にのみ使用できるようです。

乾杯!

スコット

4

1 に答える 1

1

まず、appendToMeアイテムをフェッチする必要があります。

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

次に、onItemで値を取得して変更し、store.setValue()を使用して再度設定します。

前述のように、配列を返すことのない通常のgetValueの代わりに、getValuesを使用して値の配列を返す必要があります。そして、setValuesと同様です。

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

このgetValues()メソッドはgetValue()メソッドと同じように機能しますが、getValues()は常に単一の属性値ではなく配列を返します。配列は空であるか、単一の属性値を含むか、または多くの属性値を含む可能性があります。アイテムに指定された属性の値がない場合、getValues()は空の配列[]を返します。(したがって、store.hasAttribute(item、attribute)がfalseを返す場合、store.getValues(item、attribute)は[]を返します。)

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

指定されたアイテムの指定された属性の値として、 values配列の各値を追加します。以前の1つまたは複数の値を置き換えます。store.setValues(x、y、[])( を空の配列として)を呼び出すと、store.unsetAttribute(x、y)を呼び出すのと同じ効果があります。

于 2011-03-29T12:18:29.953 に答える