2016-06-07 46 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); 
}