记住extjs 4的状态复选框

时间:2012-10-18 13:45:06

标签: javascript extjs4.1

在我的表格面板中,我添加了一个复选框,设置:

stateful: true,
stateId: 'loginPanelRemeberMe'

然后,在发送表单之前我保存状态调用:

this.saveState()
面板上的

。所有其他组件保存其状态,当我重新加载他们回忆起以前状态的页面时,但是复选框始终以未选中状态启动。 有没有办法强制保存价值?

2 个答案:

答案 0 :(得分:4)

这对我有用:

在Application启动功能(或控制器初始化功能)中,添加以下内容:

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用户注意事项: 如果您将视图定义为初始视图,则Sencha Architect会在您的启动函数之上自动添加隐藏的Ext.create行,如Ext.create('YourApp.view.MainPanel')。这会产生不良影响,即在初始化状态提供程序之前实例化视图,因此你的字段applyState函数永远不会被调用。

解决方案:取消标记您的视图作为初始视图,并在初始化状态提供程序后手动添加Ext.create行

答案 1 :(得分:0)

我发现的解决方案是这样的: 我整合了面板的状态功能,并添加了一个复选框状态字段。     //复选框状态的管理     记住我:假,

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