0

ユーザーがデータテーブルと対話できるようにするスクリプトを作成する際に私が行っていること。ユーザーが選択したシリーズごとにボタンが作成され、シリーズがグラフにプロットされます。ユーザーがボタンをクリックすると、シリーズがルームされます。すべてのデータは非表示の JSON 文字列に格納されます。ユーザーが見たい列、またはシリーズは、インデックスと呼ばれる配列に格納されます。これは、非表示の JSON 文字列でもあります) 各ボタンは、独自のクライアント ハンドラーに接続されています。

.forTargets(the index i was talking about).setTag(to the corresponding column in the data array) 

そして、それらはすべて同じサーバー ハンドラに接続されています。そのため、ボタンがクリックされると、クライアント ハンドラーはインデックスのタグを、削除する予定のシリーズに設定します。これで、サーバー ハンドラーが実行され、ID でインデックスを取得し、タグを取得します。これは、うまくいかない場合です。タグは常に null です。

私が最初に試みたのは、クライアント ハンドラーが適切に機能していないかどうかを確認することでした。そのため、インデックスのタグをいくつかの数値に設定しましたが、サーバー ハンドラーの getTag メソッドはまだ null を返しました。

idk、でもタグは UI インスタンスに保存されないのでしょうか??

以下は、サーバー ハンドラの最初のビットです。

function clickServer(e) {
   e = e.parameter;
   var app = UiApp.getActiveApplication();

   var master = JSON.parse(e.dataTable, "reviver");
   var index = JSON.parse(e.index, "reviver"); 

   var hidden = app.getElementById("hiddenIndex");
   var tag = hidden.getTag(); 
4

2 に答える 2

2

あなたが直面している問題はタイミングに関連していると思います:ハンドラーは同時に呼び出されます。これはクライアントにもサーバーハンドラーにも当てはまります。つまり、クライアントハンドラーが非表示のタグ値を変更すると、この変更はサーバーハンドラーには遅すぎます。それを「見る」機能。すべきことは、他のすべてのパラメーターが設定された後にユーザーが使用するサーバー ハンドラーをトリガーする別のボタンを作成することです。これとまったく同じ方法が、 radioButtons 値を取得するために使用される既知の回避策で使用されます。

また、なぜ非表示のウィジェットでタグを使用するのですか? それらは本質的にすでに見えないため、直接アクセスしsetValue()て使用できます... ?e.parameter.hiddenName

前述の例に示すように、これらの値が定数変数または同じ関数内の別のクライアント Handler によって Ui インスタンス (do Get 関数) 内で定義されている限り、クライアント ハンドラーに値を設定できることにも注意してください。 radioButtons... しかし、それは詳細にすぎません。このコンテキストで、(doGet 関数内で) ウィジェット値を取得する必要がある場合は、現時点では利用できgetValue()ないため、もちろん を使用してウィジェット値を取得する必要があります。e.parameter

私は十分に明確であり、これを再読したことを願っています.

于 2012-08-18T11:54:29.750 に答える
1

タグの値は、パラメーターを介してハンドラーに渡されます。この投稿では、この事実が詳細に説明されています。

于 2012-08-17T19:43:20.597 に答える