ラジオボタンの状態保存
以前、ext.jsでcookieを使ってラジオボタンの選択状態を保存する機能を試してみたのですが正常に動作しないケースがありました。具体的には、フォームの他のボタンの選択などによって、ラジオボタンの表示切替やボタン個数が動的に変更されるようにしていたところ、同じRadioGroupの複数のボタンが選択されてしまったり、validationが動作しないという問題がありました。私の使い方が悪かっただけかもしれませんが...
以前のコードで実際にCookieに設定される値を見てみたのですが不整合があるようでした。そもそも、参考にしたソースがCheckboxの状態保存だったのをRadio用に使ったのが良くなかったかもしれません。以前のコードでは、Radio一つ一つについてstateイベントを処理していたのですが、RadioGroupで処理するように変更しました。
id: 'foo' xtype: 'radiogroup', stateful: true, stateEvents : ['change'], getState: function(){return {value: this.getValue().getRawValue()};}, applyState: function(state) {this.setValue(state.value);}, items:[{//ここにラジオボタンの定義}]
RadioGroupの状態が変更されるとchangeイベントが発生するので、このタイミングで状態を保存します。getStateで実際にCookieに保存されるのは、
{value: 'val1'}
のようなオブジェクトです。applyStateではこれがstateに入ってくるので、RadioGroupにその値を設定します。