Es scheint, dass Amchart den JSON zwischenspeichert und es weder das Diagramm noch die Legende zeichnet.Amcharts Pie Prevent Caching
Wenn ich das Modal zum ersten Mal öffne, wird es gut angezeigt, aber wenn ich es schließe und wieder öffne, werden alle Daten in Beschriftungen angezeigt (aus demselben JSON), aber das Diagramm wird nicht gezeichnet. Ist es ein Caching-Problem?
Dies ist die Art, wie ich es bin Zeichnung:
var modelPie = @Html.Raw(jsonPie);
var dataProvider = [];
dataProvider = modelPie.UsefulLifes;
var chartdivdounut = AmCharts.makeChart("chartdivdounut", {
"type": "pie",
"startDuration": 0,
"theme": "light",
"addClassNames": true,
"legend": {
"position": "right",
"marginRight": 0,
"autoMargins": false
},
"innerRadius": "30%",
"defs": {
"filter": [{
"id": "shadow",
"width": "200%",
"height": "200%",
"feOffset": {
"result": "offOut",
"in": "SourceAlpha",
"dx": 0,
"dy": 0
},
"feGaussianBlur": {
"result": "blurOut",
"in": "offOut",
"stdDeviation": 5
},
"feBlend": {
"in": "SourceGraphic",
"in2": "blurOut",
"mode": "normal"
}
}]
},
"dataProvider": dataProvider,
"valueField": "Value",
"titleField": "FieldName",
"showZeroSlices": false,
"labelsEnabled": false,
"export": {
"enabled": true
}
});
chartdivdounut.addListener("init", handleInit);
chartdivdounut.addListener("rollOverSlice", function (e) {
handleRollOver(e);
});
function handleInit() {
chartdivdounut.legend.addListener("rollOverItem", handleRollOver);
}
function handleRollOver(e) {
var wedge = e.dataItem.wedge.node;
wedge.parentNode.appendChild(wedge);
}
Code eingeben hier
Benötigen Sie weitere Informationen darüber, wie Sie Ihr Popup anzeigen? Führen Sie den obigen Code jedes Mal aus, wenn Sie ein Chart-Popup öffnen? Arbeitsdemo wäre auch hilfreich. P.S. Das Diagramm führt kein Caching durch. Wenn Sie das neue Objekt in demselben Container erstellen, ohne zuvor das vorherige Diagrammobjekt zu zerstören, können Konflikte auftreten. – martynasma