javascript - 在 onFirstInteractive 范围内使用正确的变量
问题描述
所以我试图在使用onFirstInteractive
回调时发送信息。
这是我想要做的。
function initViz() {
var views = viz.getWorkbook().getPublishedSheetsInfo();
for(var v = 0; v < views.length;v++) {
var name = views[v].getName();
var options = { hideTabs: true, hideToolbar: true,
onFirstInteractive: function() {
console.log("Viz has finished loading >" + name);
getFilters(name);
}
};
var url = views[v].getUrl();
url = url.replace("/#/site/", "/t/");
var containerDiv = document.createElement('DIV');
document.body.appendChild(containerDiv);
viz = new tableau.Viz(containerDiv, url, options);
viz.hide();
}
}
function getFilters(name) {
console.log(name);
}
但似乎每次getFilters
被调用,name
总是以“最后的意见”为名。
创建对象时如何获得正确的name
值options
?
解决方案
将函数更改为内联闭包
function initViz() {
var views = viz.getWorkbook().getPublishedSheetsInfo();
for(var v = 0; v < views.length;v++) {
var name = views[v].getName();
var options = { hideTabs: true, hideToolbar: true,
onFirstInteractive: (function(name) {
return function() {
console.log("Viz has finished loading >" + name);
getFilters(name);
}
})(name)
};
var url = views[v].getUrl();
url = url.replace("/#/site/", "/t/");
var containerDiv = document.createElement('DIV');
document.body.appendChild(containerDiv);
viz = new tableau.Viz(containerDiv, url, options);
viz.hide();
}
}
function getFilters(name) {
console.log(name);
}
来源
推荐阅读
- reactjs - 条件反应道具的打字稿声明
- google-cloud-dataflow - 数据流 --requirements_file 行为 -- 是否总是将 deps 暂存到 GCS?
- css - 为什么表格边框厚度加倍,颜色错误?
- angular - 如何在新选项卡中使用自定义名称打开通过 http 的 blob 响应生成的文件
- vba - 另一个字符串变量中的单引号内的字符串变量不扩展 - VBA
- python - 将应用程序移动到其他文件夹后,Python 找不到时间模块
- algorithm - 2-3棵树的联合?
- javascript - 如何将python函数参数传递给javascript
- javascript - 单击按钮后,globalCompositeOperation 无法正常工作......我怎样才能获得作为第二个画布的预期答案?
- c# - 自定义 MVC 控制器动作属性来检查和操作动作输入