我决定给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构建商店时,该句柄才可用。
干杯!
斯科特
答案 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)。