我嘗試使用從dart應用程序調用的js lib amCharts來顯示簡單的串行圖表。在Dart中使用amCharts,無法從回調中顯示圖表
在下面的代碼中,第一次調用main()中的display()會按預期顯示圖表。
但是,當我評論第一個顯示()並單擊按鈕從回調調用display()時,圖表不會出現。
import 'dart:js';
import 'dart:html';
main(){
ButtonElement button = new Element.tag("button");
button.type = "submit";
querySelector("#button").append(button);
button.onClick.listen((event) => someCallback());
display(); // this call does display the chart
}
someCallback() {
display(); // this call does not display the chart
}
display() {
var chartData = [
{
"date": "2012-03-01",
"price": 20
},
{
"date": "2012-03-02",
"price": 75
},
{
"date": "2012-03-03",
"price": 10
}
];
context['AmCharts'].callMethod('ready', [(){
var chart2 = new JsObject(context['AmCharts']['AmSerialChart']);
chart2['dataProvider'] = new JsObject.jsify(chartData);
chart2['categoryField'] = "date";
chart2['dataDateFormat'] = "YYYY-MM-DD";
var categoryAxis = chart2['categoryAxis'];
categoryAxis['parseDates'] = true;
categoryAxis['minPeriod'] = "DD";
categoryAxis['dashLength'] = 1;
var valueAxis = new JsObject(context['AmCharts']['ValueAxis']);
valueAxis['axisColor'] = "#DADADA";
valueAxis['dashLength'] = 1;
chart2.callMethod('addValueAxis', [valueAxis]);
var graph = new JsObject(context['AmCharts']['AmGraph']);
graph['title'] = "Price";
graph['valueField'] = "price";
chart2.callMethod('addGraph', [graph]);
chart2.callMethod('write', ["chart"]);
}]);
}
當我按照你的建議做時,圖表不顯示按鈕而不點擊按鈕。但是,多虧了這個想法,我發現瞭如何使它工作! – ecastanie
很高興你發現了這個問題。 –