Tableau JS Api Filter不接受变量

时间:2016-06-07 06:53:32

标签: javascript string variables tableau

我正在编写一些代码,它应该根据数组的值自动过滤Tableau工作簿。

通过以下方式调用该函数:

showOnly2('Disponent',filterString);

' Disponent'是硬编码的,filterString是这种格式的数组:

['201','202','203','204','205','206','207','208','209']

在以下代码块中:

function showOnly2(filterName, values) {
        document.getElementById("header").innerHTML = values;
    sheet = viz.getWorkbook().getActiveSheet();
    if(sheet.getSheetType() === 'worksheet') {
        sheet.applyFilterAsync(filterName, values, 'REPLACE');
    } else {
        worksheetArray = sheet.getWorksheets();
        for(var i = 0; i < worksheetArray.length; i++) {
            worksheetArray[i].applyFilterAsync(filterName, values, 'REPLACE');  
        }
    }
}

使用变量&#34;值&#34;调用时,worksheetArray[i].applyFilterAsync(filterName, values, 'REPLACE');部分不起作用。

但是,如果我将数组的值硬编码到公式中:

worksheetArray[i].applyFilterAsync(filterName, ['201','202','203','204','205','206','207','208','209'] , 'REPLACE');

它就像一个魅力...不幸的是我不能硬编码,因为数组中的数字(我想设置的过滤器值)会随着时间的推移而变化。

有人有想法,为什么变量版本不起作用?

(我还通过实施document.getElementById("header").innerHTML = values;检查了范围问题 在函数内,只需要仔细检查数组值是否正确读取。

非常感谢任何指针。

1 个答案:

答案 0 :(得分:0)

答案很简单。

API预测数组对象不是字符串(尽管显示为字符串时看起来都相同)。

因此,以下代码完美无缺:

var filterArray = [];
for(var i = 201; i < 300; i++) {
    filterArray.push(i);
}