フォーム パネルにチェックボックスを追加し、次のように設定しました。
stateful: true,
stateId: 'loginPanelRemeberMe'
次に、フォームを送信する前に、状態呼び出しを保存します。
this.saveState()
パネル上。他のすべてのコンポーネントは状態を保存し、ページをリロードすると以前の状態が呼び出されますが、チェックボックスは常にチェックされていない状態で始まります。値を強制的に保存する方法はありますか?
フォーム パネルにチェックボックスを追加し、次のように設定しました。
stateful: true,
stateId: 'loginPanelRemeberMe'
次に、フォームを送信する前に、状態呼び出しを保存します。
this.saveState()
パネル上。他のすべてのコンポーネントは状態を保存し、ページをリロードすると以前の状態が呼び出されますが、チェックボックスは常にチェックされていない状態で始まります。値を強制的に保存する方法はありますか?
これは私のために働く:
アプリケーションの起動関数 (またはコントローラーの init 関数) で、次を追加します。
if( Ext.supports.LocalStorage )
{
Ext.state.Manager.setProvider(new Ext.state.LocalStorageProvider());
}
else
{
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
}
次に、ビューでチェックボックスを定義し、getState および applyState 関数をオーバーライドします。
{
xtype: 'checkboxfield',
getState: function() {
return { "checked": this.getValue() };
},
applyState: function(state) {
this.setValue( state.checked );
},
stateEvents: [
'change'
],
stateId: 'myCheckBox',
stateful: true,
id: 'myCheckBox',
}
ExtJS 4.2 および 6.5.x で動作することがテストされています。
Sencha Architect ユーザーへの注意:
ビューを初期ビューとして定義すると、Ext.create('YourApp.view.MainPanel')
Sencha Architect によって起動関数の上に Ext.create のような非表示の行が自動的に追加されます。これにより、状態プロバイダーを初期化する前にビューをインスタンス化するという望ましくない効果が生じるため、フィールドの applyState 関数が呼び出されることはありません。
解決策:ビューを初期ビューとしてマーク解除し、状態プロバイダーが初期化された後に Ext.create 行を手動で追加します。
私が見つけた解決策は次のとおりです。パネルの状態関数をovverridedし、チェックボックスのステータスフィールドを追加しました。//チェックボックスの状態の管理rememberMe:false、
getState: function() {
var state = this.callParent();
state = this.addPropertyToState(state, 'rememberMe', this.rememberMe);
return state;
},
applyState: function(state) {
this.callParent(state);
this.getComponent('checkRememberMe').setValue(state.rememberMe);
},
フォームを送信するメソッドに、次の行を追加しました。
//Manage state
var checkRememberMe = this.getComponent('checkRememberMe');
if(checkRememberMe.getValue() == true){
this.rememberMe = checkRememberMe.getValue();
this.saveState();
}