2016-06-07 74 views
0

我正在编写一些代码,它应该根据数组的值自动过滤Tableau工作簿。Tableau JS Api Filter不接受变量

该函数的调用,通过:

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'); 
     } 
    } 
} 

使用变量“values”调用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; ,只是双检,数组值被正确读取。

任何指针都大加赞赏。

回答

0

答案是直线前进。

该API expectes阵列对象不是字符串(尽管当作为字符串显示看起来都相同)。

因此,下面的代码WOR ked完美无缺:

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