2015-05-18 3 views
0

У меня, вероятно, отсутствует что-то очень очевидное здесь, но почему следующее не записывает ничего в журнал? (Jsfiddle здесь - http://jsfiddle.net/hiwilson1/qk9cjuh2/ - хотя это не работает для меня)Tableau Javascript API workbook.activeSheet()

<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> 

Я построил визуализации, а затем соорудил кнопку, чтобы запустить небольшую функцию, которая изменяет таблицу. Я могу получить доступ к объекту книги из этой функции, но нет ничего особенного в функции, которая дает ему право доступа к этому объекту книги. Почему я не могу также выводить информацию о объекте книги в журнал?

Ошибка, которую я получаю, это «Исходная ошибка: книга не определена». Если он не определен, как функция может его использовать ?!

ответ

2

Ваш workbook переменная не создана до onFirstInteractive обратного вызова не вызывается, но ваш призыв к console.log() сразу после инициализации вашего tableau.Viz. Активация этого объекта не вызовет вызов обратного вызова - это произойдет позже.

В зависимости от причины, по которой вы звоните console.log, возможно, имеет смысл переместить этот вызов в конец обратного вызова onFirstInteractive.

+0

Превосходно, спасибо Ричи. Я просто спрашивал об этом из любопытства - я относительно новичок в js, и все продолжают советовать мне писать информацию на консоль, чтобы понять, что происходит. Итак, чтобы сделать это, мне нужно убедиться, что виз полностью «загружен» первым? – hwilson1

+0

@ hwilson1: Да; порядок отображения вашего кода на экране - это не тот порядок, в котором он работает. :-) – RichieHindle

Смежные вопросы