Dojo DataChart和手动ItemFileWriteStore更新

时间:2011-03-29 11:25:36

标签: websocket dojox.charting dojo

我决定给Dojo一次,而不是一次使用JQuery,并且在操作数据存储时遇到了麻烦。我有一个DataChart绑定到ItemFileWriteStore的内容我已经从Web套接字JSON消息手动填充:

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',但看起来我只能使用它来将整个值块替换为一个单元。此外,我没有与调用一起使用的“项目”句柄,只有在您使用newItem API而不是使用JSON构建商店时,该句柄才可用。

干杯!

斯科特

1 个答案:

答案 0 :(得分: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()再次设置它们

如上所述,getValues需要用于返回值数组,而不是通常的getValue,它永远不会返回数组。和setValues类似。

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

  

这个getValues()方法可以正常工作   比如getValue()方法,但是   getValues()总是返回一个数组   而不是单个属性值。   该数组可能为空,可能包含一个   单个属性值,或者可以包含   许多属性值。如果是该项目   没有给定的值   属性,然后getValues()将   返回一个空数组:[]。 (因此,如果   store.hasAttribute(item,attribute)   那么假的回报是假的   store.getValues(item,attribute)将   return []。)

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

  

values 数组中添加每个值   作为给定属性的值   给定的项目。取代之前的任何内容   价值或价值。调用   store.setValues(x,y,[])(with    values 作为空数组)与调用具有相同的效果   store.unsetAttribute(x,y)。