我可能在这里遗漏了一些非常明显的东西,但为什么以下内容不向日志写入任何内容? (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>
我已经构建了可视化,然后安装了一个按钮来运行一个更改工作表的小函数。我可以从该函数内访问工作簿对象,但该函数没有什么特别之处,赋予它访问该工作簿对象的权利。为什么我不能将有关工作簿对象的信息也输出到日志中?
我收到的错误是“引用错误:工作簿未定义”。如果没有定义,函数如何使用它?!
最佳答案
在调用 onFirstInteractive
回调之前,不会创建您的 workbook
变量,但您在初始化后立即调用 console.log()
您的tableau.Viz
。初始化该对象的行为不会导致调用回调 - 这将在稍后发生。
根据您这样调用 console.log
的原因,将该调用移至 onFirstInteractive
回调的末尾可能是有意义的。
关于javascript - Tableau Javascript API workbook.activeSheet(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30308657/