Wir verwenden die Tableau API, um zwei Arbeitsmappen einzubetten. Jede Arbeitsmappe ist in einen iframe eingebettet. Das Problem ist, wenn wir von einer Arbeitsmappe zur nächsten gehen, erhalten wir den Fehler "tableau-2.0.0.min.js: 147 Uncaught Error: Eine andere Visualisierung ist bereits im Element 'div # iFrameDiv' vorhanden."viz.dispose() funktioniert nicht
hier ist unser Prozess auf den Punkt gebracht.
, wenn die Benutzer unserer kundenspezifischen Web-Seite zuzugreifen, initialisieren wir eine Arbeitsmappe mit diesem Code:
function initializeVizSummary() {
var placeholderDiv = document.getElementById("iFrameDiv"),
url = "https://10ay.online.tableau.com/t/site/views/workbook1/Summary",
options = {
width: "100%",
height: 1250,
hideTabs: true,
hideToolbar: true,
onFirstInteractive: function() {
workbook = viz.getWorkbook();
activeSheet = workbook.getActiveSheet();
}
};
viz = new tableau.Viz(placeholderDiv, url, options);
}
dann der Benutzer klickt auf einen Link, der mit dieser Funktion eine andere Arbeitsmappe initialisiert:
function initCustomDashboard(){
var placeholderCustomDiv = document.getElementById("iFrameDiv2");
var customUrl = "https://10ay.online.tableau.com/t/site/views/workbook2/summary2";
options = {
width: "100%",
height: 1250,
hideTabs: true,
hideToolbar: true,
onFirstInteractive: function() {
workbook = viz.getWorkbook();
}
};
viz = new tableau.Viz(placeholderCustomDiv, customUrl,options);
}
Das obige funktioniert gut, aber wenn der Benutzer die erste Arbeitsmappe gehen möchte, erhalten wir den Fehler "tableau-2.0.0.min.js: 147 Uncaught Error: Eine andere Visualisierung ist bereits im Element 'div # iFrameDiv' vorhanden."
Durch die Dokumentation gehen (https://onlinehelp.tableau.com/current/api/js_api/en-us/JavaScriptAPI/js_api_ref.htm). Es scheint, die Lösung ist die Entsorgungs-Methode zu verwenden
Also ich viz.dispose() direkt vor dem zweiten Aufruf an initializeVizSummary() aber das scheint nicht zu funktionieren, weil, wenn ich viz.getWorkbook() tun. Es erhält das zweite Arbeitsbuch.
Was mache ich falsch?
Danke