在javascript中将模型数据传递到nvd3图表

时间:2015-08-31 22:49:57

标签: javascript json asp.net-mvc charts

我试图以类型为字符串的Model元素的形式将真实数据替换为默认图表数据。有谁能请证明正确的语法来实现这一目标?非常感谢提前。

使用默认数据显示的.datum脚本函数:

Ctrl+R

我尝试的样本:

pythonScript

控制器和模型字符串实体克隆默认数据Unix语法:

function cumulativeTestData() {
    return [
        {
            key: "Closing Prices",
            mean: 60,
            values: [[1083297600000, 0.77078283705125], [1085976000000, 1.8356366650335], [1088568000000, 5.3121322073127], [1091246400000, 4.9320975829662], [1093924800000, 3.9835408823225], [1096516800000, 6.8694685316805], [1099195200000, 8.4854877428545], [1101790800000, 15.933627197384], [1104469200000, 15.920980069544], [1107147600000, 12.478685045651]]
        },
    ];
}

1 个答案:

答案 0 :(得分:2)

您目前只是传递一个字符串,而不是一个可以表示为JSON的对象。

因为你需要传递一个包含2个数组的数组(表示图表x和y值,你需要创建一个匿名对象

并在主模型中添加属性

public object Coordinates { get; set; }

然后在控制器中

model.Coordinates = new[]
{
    new []{1083297600000, 0.77078283705125F},
    new []{1085976000000, 1.8356366650335F}
};

然后在你的剧本中

var values = JSON.parse('@Html.Raw(Json.Encode(Model.Coordinates))');

要从模型构建所需的数组格式,可以使用

DateTime baseDate = new DateTime(1970, 1, 1);
object[] array = new object[prices.Count];
for(int i = 0; i < prices.Count; i++)
{
  array[i] = new[]
  {
    prices[i].CloseCreatedDate.Subtract(baseDate).TotalMilliseconds, 
    prices[i].Close
  };
}
model.Coordinates = array;