从单个ajax GET创建多个DataSource

时间:2015-08-17 08:39:07

标签: javascript ajax devextreme phonejs

我正在尝试将$.getJSON调用的数据分配给两个不同的DataSource。一个将包含数据“raw”,另一个将被操纵。

我收到的json(以下数组):

{
  "ID": 1,
  "Cust_Id": 1,
  "Login_Id": 1,
  "Hours": 5,
  "Date": "12/08/2015"
  "Comment": ""
}

我正在使用dxList来显示上述数据,我收到它时只是原始数据,但是我使用dxChart来显示您为当前客户工作的小时数周。所以这就是我想要的:

[
  {
    "Date": "12/08/2015",
    "Hours": 5
  },
  {
    "Date": "13/08/2015",
    "Hours": 7
  }
]

而不是:

[
  {
    "Date": "12/08/2015",
    "Hours" 3
  },
  {
    "Date": "12/08/2015",
    "Hours": 2
  },
  {
    "Date": "13/08/2015",
    "Hours": 2
  },
  {
    "Date": "13/08/2015",
    "Hours": 5
  }
]

如果使用我收到的原始数据,我冒险在x轴上使用两次,这是我不想要的,我想创建一个新的数据源,合并date和{{1}使用哈希表(简单键/值):

hours

正如您所看到的,我是在单独调用中执行此操作,但服务(WCF)在尝试创建与DB的连接时崩溃,尽管第一次调用var dataSource = new DevExpress.data.DataSource(baseAddress + "hours/login/customer/" + window.loggedInUser.Id + "/" + params.id.Id); var chartSource = new DevExpress.data.DataSource({ load: function () { console.log("CHARTSOURCE LOAD FUNCION"); var resultArray = []; var chartArray = {}; console.log(dataSource); console.log(dataSource.length); for (var i = 0; i < dataSource.length; i++) { if (chartArray.hasOwnProperty(dataSource[i].Date)) { chartArray[dataSource[i].Date] += dataSource[i].Hours; } else { chartArray[dataSource[i].Date] = dataSource[i].Hours; } } for (var key in chartArray) { resultArray.push({ Date: key, Hours: chartArray[key] }); } console.log("RETURN RESULT ARRAY"); return resultArray; } }); 仍在执行它的工作,这意味着它试图创建实例,但它不能。

我如何组合这两个功能?

我尝试了什么

var dataSource

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可以手动调用$.getJSON方法,然后在回调中为每个小部件初始化dataSource实例:

$.getJSON('/api').done(function(response){
    //init dataSource...
});

我已经创建了一个样本 - http://jsfiddle.net/685taxbm/来演示这种方法。

我使用了假load函数而不是$.getJSON和两个列表而不是列表和图表。

相关问题