我在单击按钮时使用 nvd3 库实现离散条形图,我正在调用 generateBarChart 方法,这里是代码:
generateBarChart = function(data, options) {
if (!$.isArray(data)) {
if (!$.isPlainObject(data)) {
data = $.makeArray(data);
} else {
try {
data = $.parseJSON(data);
} catch(err) {
console.error(data, "generateBarChart error", err.message, err.stack);
data = [];
}
}
}
var chart1;
if (!$.isPlainObject(options)) {
options = {};
}
options = $.extend(true, {
container : "#svgChart",
title : "",
titleStyle : {
x : 500,
y : 200,
fontFamily : "sans-serif",
fontSize : "20px",
fill : "black"
}
}, options);
nv.addGraph(function() {
chart1 = nv.models.discreteBarChart().x(function(d) {
return d.label || ""
}).y(function(d) {
return d.value || 0
});
var selectedChart = d3.select(options.container).datum(dataserver(data)).transition().duration(500);
selectedChart = selectedChart.call(chart1);
//d3.select(options.container).append("text").attr("x", options.titleStyle.x).attr("y", options.titleStyle.y).attr("font-family", options.titleStyle.fontFamily).attr("font-size", options.titleStyle.fontSize).attr("fill", options.titleStyle.fill).text(options.title);
$(options.container).css({
}).parent().css("text-align", "center").prepend('<h5 class="text-center" >' + options.title + '</h5>');
nv.utils.windowResize(function() {
chart1.update();
});
return chart1;
});
return chart1;
};
function dataserver(data) {
for ( i = 0; i < data.length; i++) {//TODO
var name = data[i].name;
//TODO
var itemAmount = data[i].itemAmount;
//TODO
}
return [{
"color" : "#d62728",
"values" : [{
"label" : name,
"value" : itemAmount
}]
}];
}
我指的是以下链接(http://nvd3.org/livecode/#codemirrorNav)来生成discreteBarchart我有点卡在dataserver()方法中,因为在for循环中我只能得到最后一个值