2013-08-19 50 views
0

我試圖將一個變量傳遞給谷歌可視化方法,但如果我使用變量但是如果我輸入字符串時工作得很好,它會一直出錯。我在這裏錯過了什麼?將字符串變量傳遞給方法的錯誤

這工作:

var filterdata = new google.visualization.DataView(data) 
filterdata.setRows(
    filterdata.getFilteredRows([{column: 0, value: 'someval'}]) 
); 

這不起作用:

filteredrows = "[{column: 0, value: 'someval'}]"; 

var filterdata = new google.visualization.DataView(data) 
filterdata.setRows(
    filterdata.getFilteredRows(filteredrows) 
); 

我得到的錯誤是:

「未捕獲的錯誤:columnFilters必須是一個非空array「

編輯:

我試圖構建一個數組/字符串來傳遞所有儀表板控件狀態作爲getfilteredrows()的過濾條件。以下是我用來構建數組的代碼。我也嘗試創建一個字符串,但不管怎樣它都不被接受...

control_states = [ctrl1.getState(),ctrl2.getState(),ctrl3.getState()]; 
var filteredrows = {}; 
var cnt = 0; 
for (var i = 0; i < control_states.length; i++) { 
    var picker_state = control_states[i] 
    for (var j = 0; j < picker_state.selectedValues.length; j++) { 
    filteredrows[cnt] = "column: " + i + ", value: '" + picker_state.selectedValues[j] + "'"; 
    cnt += 1; 
    }; 
}; 

回答

0

這是我如何解決這個問題,感謝naomik和Krasimir指出我在正確的方向!

control_states = [ctrl1.getState(),ctrl2.getState(),ctrl3.getState()]; 

var filteredrows = [ ]; 
var cnt = 0; 
for (var i = 0; i < control_states.length; i++) { 
    var picker_state = control_states[i] 
    for (var j = 0; j < picker_state.selectedValues.length; j++) { 
    filteredrows[cnt] = [ ]; 
    filteredrows[cnt]["column"] = i; 
    filteredrows[cnt]["value"] = picker_state.selectedValues[j]; 
    cnt += 1; 
    }; 
}; 

var filterdata = new google.visualization.DataView(data) 
filterdata.setRows(
    filterdata.getFilteredRows(filteredrows) 
); 
1

一個是JSON,另一個是實際的數組。

只寫在第一行,因爲這

var filteredrows = [{column: 0, value: 'someval'}]; 

如果您filteredrows實際上是字符串,你不能改變這種狀況,就可以第一

var filterdata = new google.visualization.DataView(data) 
filterdata.setRows(
    filterdata.getFilteredRows(JSON.parse(filteredrows)) 
); 
+0

我試過JSON解析,但它仍然沒有工作。我會編輯問題,以澄清我在做什麼 – doovers

1

我想用JSON.parse該方法getFilteredRows接受一個有效的數組而不是一個字符串。我會建議先使用JSON.parse發送字符串。即像這樣:

filterdata.getFilteredRows(JSON.parse(filteredrows)); 
+0

我編輯的問題,以提供更多的信息,因爲我試過這個,它沒有工作 – doovers

+0

啊哈......我明白了。然後,您應該使用JSON.parse將您的字符串轉換爲有效的JavaScript對象。之後,您可以將其傳遞給API的方法。 – Krasimir

相關問題