0

変数を Google 視覚化メソッドに渡そうとしていますが、変数を使用するとエラーが発生し続けますが、文字列を入力すると正常に動作します。ここで何が欠けていますか?

これは機能します:

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 は空でない配列でなければなりません」

編集:

すべてのダッシュボード コントロールの状態を 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;
  };
};
4

3 に答える 3

1

メソッド getFilteredRows は、文字列ではなく有効な配列を受け入れると思います。文字列を送信する前にJSON.parseを使用することをお勧めします。つまり、次のようなものです。

filterdata.getFilteredRows(JSON.parse(filteredrows));
于 2013-08-19T07:13:46.703 に答える
1

1 つは JSON で、もう 1 つは実際の配列です。

このように最初の行を書くだけです

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

あなたfilteredrowsが実際に文字列であり、それを変更できない場合は、JSON.parse最初に使用してください

var filterdata = new google.visualization.DataView(data)
filterdata.setRows(
  filterdata.getFilteredRows(JSON.parse(filteredrows))
);
于 2013-08-19T07:12:38.820 に答える
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)
);
于 2013-08-20T05:34:06.863 に答える