Google Closure Library はフォームを使わない方針?
サンプル見てたらdivとかulとかでコンポーネントが構成されてる。
それはいいんだけど、そっからデータをポストするにはどうしたらいいのか…。
Google Closure Libraryベースで作るってことは、基本全てのデータ送信はAjaxでやるのかな?
Ajaxのやり方は
goog.net.XhrIo: make simple ajax calls with Google Closure – DaveOnCode
ここに書いてある通り。
goog.net.XhrIoを使うらしい。
フォームのデータを取ってくるなら goog.dom.forms.getFormDataMap を使うといい。
しかし通常のフォームとdivで作られたコンポーネントを混ぜるとややこしくなりそうだ。
確かにGoogle Sitesとか管理画面とか見てると、ボタンを押す→「保存中…」→「保存しました」→保存後の画面に遷移したりしなかったり、という流れになっている。
むむむ、そうか…。
あとメモ。
goog.ui.MenuItem系のオブジェクトは、コンストラクタの第一引数がcaptionになって第二引数がvalueになる。
実際はもっと汎用的な引数なんだけど、単純にラベルと値だけ欲しいときは
var menu = new goog.ui.Menu(); var item = new goog.ui.CheckBoxMenuItem('ラベル', '値'); menu.addItem(item);
のようにすればいい。
そしたら後で
if (item.isChecked()){ var caption = item.getCaption(); var value = item.getValue(); }
で選択中のデータを取ってこれる。
prototypeっぽい関数
element = goog.dom.$('idName');
valueInForm = goog.dom.$F(element);