Dojo DataChart 和手动 ItemFileWriteStore 更新

发布于 2024-10-27 20:01:17 字数 858 浏览 1 评论 0原文

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

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”值列表的一些新数值。 如何将其添加到商店,这是否足以触发图表更新?

我查看了 [](write API) 'store.setValue',但看起来我只能使用它来将整个值块替换为一个单元。此外,我没有可用于调用的“item”句柄,该句柄似乎仅在您使用 newItem API 而不是使用 JSON 构建存储时才可用。

干杯!

斯科特

I've decided to give Dojo a shot instead of using JQuery for once, and am having trouble manipulating a data store. I've got a DataChart bound to the contents of an ItemFileWriteStore i've populated by hand from a web socket JSON message:

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

At this point, the graph is displaying the "appendToMe" series i've created. Next, I receive another message, containing some new numeric value for the "appendToMe" values list.
How do I add it to the store, and will this be sufficient to trigger the graph to update?

I've looked at the [](write API) 'store.setValue', but it looks like I can only use this to replace the whole values chunk as one unit. In addition, I don't have a 'item' handle to use with the call, which appears to only be available if you use the newItem API instead of constructing the store with JSON.

Cheers!

Scott

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太阳男子 2024-11-03 20:01:17

首先,您需要获取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(项目, 属性)
返回 false,那么
store.getValues(item, attribute) 将
返回[]。)

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

添加 values 数组中的每个值
作为给定属性的值
给定的项目。替换任何以前的
值或值。呼唤
store.setValues(x, y, []) (与
values 作为一个空数组)与调用具有相同的效果
store.unsetAttribute(x, y)。

First you need to fetch the appendToMe item.

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

Then in the onItem, get your values, modify them, and then set them again using store.setValue()

As noted, getValues needs to be used to return the array of values instead of the usual getValue, which never returns an array. And similar with setValues.

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

This getValues() method works just
like the getValue() method, but
getValues() always returns an array
rather than a single attribute value.
The array may be empty, may contain a
single attribute value, or may contain
many attribute values. If the item
does not have a value for the given
attribute, then getValues() will
return an empty array: []. (So, if
store.hasAttribute(item, attribute)
has a return of false, then
store.getValues(item, attribute) will
return [].)

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

Adds each value in the values array
as a value of the given attribute on
the given item. Replaces any previous
value or values. Calling
store.setValues(x, y, []) (with
values as an empty array) has the same effect as calling
store.unsetAttribute(x, y).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文