viz.dispose()不起作用

时间:2016-04-22 18:38:25

标签: javascript tableau

我们正在使用Tableau API嵌入两个工作簿。每个工作簿都嵌入在iframe中。问题是当我们从一个工作簿转到另一个工作簿时,我们得到错误“tableau-2.0.0.min.js:147 Uncaught Error:另一个viz已经出现在元素'div #iFrameDiv'中。”

以下是我们的流程如何运作。

当用户访问我们的自定义网页时,我们使用以下代码初始化工作簿:

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);
}  

然后用户点击使用此功能初始化另一个工作簿的链接:

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);
}

以上工作正常但是当用户想要第一个工作簿时,我们得到错误“tableau-2.0.0.min.js:147 Uncaught Error:另一个viz已经存在于元素'div #iFrameDiv'中。 “

通过文档(https://onlinehelp.tableau.com/current/api/js_api/en-us/JavaScriptAPI/js_api_ref.htm)。似乎解决方案是使用dispose方法

所以我在第二次调用initializeVizSummary()之前发出viz.dispose(),但这似乎不起作用,因为当我执行viz.getWorkbook()时。它获得了第二本工作簿。

我做错了什么?

由于

1 个答案:

答案 0 :(得分:0)

所以Dispose工作正常。我的错误是使用两个元素来填充每个工作簿#iFrameDiv #iFrameDiv2。所以正确的设置是让一个DOM元素填充工作簿,只需确保在加载工作簿之前发出viz.dispose()