2016-04-22 1 views
1

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

Antwort

0

Also Dispose funktioniert gut. Mein Fehler bestand darin, zwei Elemente zu verwenden, um die Arbeitsmappe #iFrameDiv # iFrameDiv2 zu füllen. Die richtige Einstellung besteht also darin, dass Sie ein DOM-Element zum Füllen der Arbeitsmappe haben. Stellen Sie sicher, dass viz.dispose() vor dem Laden der Arbeitsmappe

ausgegeben wird
Verwandte Themen