2016-08-08 66 views
0

Ich öffne nvd3 pieChart in einem Popup-Fenster. Ich erstellen Popup-Fenster wie folgt aus:Probleme beim Anzeigen von nvd3 pieChart in einem Popup-Fenster?

function openPopup(html,pos,style) { 
    var newWindow = window.open(''); 
    newWindow.document.write(html); 
    return newWindow; 
} 

function openChartPopup(chartID,chartTitle) { 
    divId = "div" + chartID; 
    html = "<p>"+chartTitle+"</p><div id= \""+divId+"\"><svg id=\""+chartID+"\"></svg></div>"; 
    newWindow = openPopup(html,"_blank",""); 
    return d3.select(newWindow.document.getElementById(chartID)); 
} 

dann erstelle ich ein PieChart folgenden Code:

de_select = openChartPopup("test_chart","TEst Chart"); 
    var chart = nv.models.pieChart() 
     .x(function(d) { return d.label }) 
     .y(function(d) { return d.value }) 
     .showLabels(true) 
     .growOnHover(true); 
    de_select.datum(exampleData()); 
    de_select.style({"width":"400px", "height":"500px"}); 
    de_select.transition().duration(350); 
    de_select.call(chart); 
    nv.addGraph(chart); 

ich den obigen Code auf die Schaltfläche klicken auszuführen, die ein Diagramm in Pop eröffnet aber manchmal ist es doesn‘ t korrekt angezeigt und sieht wie folgt aus: enter image description here

Wenn ich Registerkarten wechseln und sich auf Pop-Fenster wieder erscheint es richtig, wie: enter image description here

Allerdings funktionieren alle Diagrammeigenschaften immer noch nicht gut, zum Beispiel "growOnHover" aber der gleiche Code funktioniert gut, wenn ich Diagramm in einer normalen HTML-Seite statt Popup anzeigen, ich denke, es hat etwas mit Popup-Fenster zu tun, Ist es das Problem mit NVD3? Kann jemand auf das Problem hinweisen?

Antwort

2

Versuchen Sie folgendes:

nv.utils.windowResize(chart.update); 

Dies wird das Diagramm aktualisiert, wenn die Fenstergröße verändert wird. Was bei einem Popup-Fenster passieren kann.

Ich bin mir nicht sicher, wie Sie das Popup-Fenster öffnen. Sie könnten

newWindow = window.open("",title, "width=400,height=500"); 
newWindow.document.write(html); 
+0

verwenden, während dieser Code-Schnipsel, die Frage lösen kann, [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich zu verbessern hilft die Qualität Ihres Posts Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ

+0

@FrankerZ danke für deinen Kommentar. Ich aktualisierte die Antwort – programmer1490

+0

@ programmer1490, ich benutze den gleichen Code wie du erwähntest openPopup ist eine Funktion, ich habe den Beitrag aktualisiert, den Sie sehen können. Darüber hinaus habe ich Ihren Vorschlag der Fenstergröße versucht, aber es hat nicht funktioniert – TechMaster