ログ日記

作業ログと日記とメモ

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);