【问题标题】:Tableau Javascript API workbook.activeSheet()Tableau Javascript API 工作簿.activeSheet()
【发布时间】:2015-05-19 00:56:43
【问题描述】:

我可能在这里遗漏了一些非常明显的东西,但是为什么以下内容没有向日志写入任何内容? (这里的 jsfiddle - http://jsfiddle.net/hiwilson1/qk9cjuh2/ - 虽然它不适合我)

<html>
<head>
<style>
#tableauViz {
    width: 1500px;
    height: 500px;
}
input[type="button"] {
    margin: 5px;
}
</style>
<script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau-2.0.0.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
window.onload = function() {

    // append visualisation container
    d3.select("body").append("div").attr("id", "tableauViz")

    // function to build visualisation.
    function initializeViz() {
        var placeholderDiv = document.getElementById("tableauViz");
        var url = "http://public.tableau.com/views/WorldIndicators/GDPpercapita";
        var options = {
            width: placeholderDiv.offsetWidth,
            height: placeholderDiv.offsetHeight,
            hideTabs: false,
            hideToolbar: true,
            onFirstInteractive: function () {
                workbook = viz.getWorkbook();
                activeSheet = workbook.getActiveSheet();
            }
        };
        viz = new tableau.Viz(placeholderDiv, url, options);
    }  

    initializeViz();

    // switch worksheet function.
    function switchTab(val) {
        workbook.activateSheetAsync(val);
    }    

    d3.select("body").append("input")
        .attr("type", "button")
        .attr("value", "click me")
        .on("click", function() {switchTab("GDP per capita map")})

    console.log(workbook.activeSheet)
}
</script>
</head>

<body>

</body>
</html>

我已经构建了可视化,然后安装了一个按钮来运行一个更改工作表的小功能。我可以从该函数中访问工作簿对象,但是赋予它访问该工作簿对象的权利的函数并没有什么特别之处。为什么我不能同时将有关工作簿对象的信息输出到日志?

我收到的错误是“参考错误:未定义工作簿”。如果没有定义函数如何使用它?!

【问题讨论】:

    标签: javascript tableau-api


    【解决方案1】:

    在调用onFirstInteractive 回调之前不会创建您的workbook 变量,但是在初始化tableau.Viz 之后立即调用console.log()。初始化该对象的行为不会导致回调被调用 - 稍后会发生。

    根据您这样调用console.log 的原因,将该调用移至onFirstInteractive 回调的末尾可能是有意义的。

    【讨论】:

    • 太棒了,谢谢里奇。我只是出于好奇而查询它——我对 js 比较陌生,每个人都建议我将信息写入控制台以了解正在发生的事情。因此,为了做到这一点,我需要先确保可视化已完全“加载”?
    • @hwilson1:是的;您的代码出现在屏幕上的顺序不是它运行的顺序。 :-)
    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2019-07-19
    相关资源
    最近更新 更多