我在使用HighStock图表来渲染数据时遇到了很多麻烦。图表显示正常,但没有数据点,也没有时间范围。我正在使用AngularJS来调用我的RestAPI方法。此方法返回日期和关闭值的数组。
**c#**
public object[] Get(string symbol)
{
DateTime startDate = DateTime.Now.AddDays(-365);
DateTime endDate = DateTime.Now;
List<HistoryQuote> hq_list = StockEngine.GetHistory(symbol, startDate, endDate);
List<object> output = new List<object>();
foreach (var h in hq_list)
{
// in the format [1223337600000,12.74]
output.Add(new object[] { JsonFriendlyDate(h.Date), h.Close });
}
return output.ToArray();
}
public long JsonFriendlyDate(DateTime value)
{
return (value.ToUniversalTime().Ticks - ((new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks)) / 10000;
}
以下是我用来创建图表并绑定数据的JavaScript:
var params = { symbol: stock };
services.HistorySvc.query(params,
function success(data) {
$scope.StockListLoading = false;
$('.modal').modal('hide');
$scope.ShowHistory = true;
$('#history_container').highcharts('StockChart', {
rangeSelector: {
selected: 1
},
title: {
text: stock + ' Stock Price'
},
series: [{
name: stock + ' Stock Price',
data: data,
type: 'area',
threshold: null,
tooltip: {
valueDecimals: 2
},
fillColor: {
linearGradient: {
x1: 0,
y1: 0,
x2: 0,
y2: 1
},
stops: [
[0, Highcharts.getOptions().colors[0]],
[1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
]
}
}]
});
}, function error(err) {
alert("Hmm. History service failed. Weird!");
$scope.StockListLoading = true;
});
HistorySvc定义为:
HistorySvc: $resource('/API/History/:id', { 'id': '@id' }, { update: { method: 'PUT' } })
我不确定我做错了什么。我从api调用中收到有效数据,但它似乎不是图表所需的格式。
当我在jsfiddle中运行highstock示例时,他们的API调用返回[[1000202,102.4],[12388388,10.9]]。我的返回格式完全相同,但图表不会渲染点数。任何帮助将不胜感激!